Learn
Free programming and CSE courses
Each course is a path of short lessons, with examples you can run and watch, quizzes, and practice problems checked right in your browser.
Available
HTML: Build Web Pages
Write real web pages from nothing: text, links, images, tables, forms, semantic structure, accessibility and SEO, checked in your browser as you go.
BeginnerCSS: Style and Lay Out Web Pages
From your first rule to flexbox, grid, responsive design and animation, with every exercise checked against what the browser really computes.
BeginnerJavaScript: Programming for the Web
From your first program to closures, async code and modules, with every variable and call visible, then real pages that respond, load data and remember it.
BeginnerC++ Programming
C++ from your first cout to references, strings, vectors, the standard library, templates and error handling, with every variable and object on screen.
BeginnerPython Programming
From your first print() to classes, recursion and data structures.
BeginnerStructured Programming in C
C as universities teach it: types, loops, arrays, strings, functions, pointers, structs and malloc, with every byte of memory on screen.
IntermediateData Structures
Lists, stacks, queues, trees, heaps, hash tables and graphs, built in C node by node, with every pointer drawn.
IntermediateAlgorithms
Searching, sorting, recursion, greedy choices, dynamic programming and graph algorithms, with the cost of each one counted.
BeginnerFoundations: how computers work
Bits and bytes, binary and hex, negative numbers, bitwise tricks, floating point, text, memory and how a program runs, explored in C.
BeginnerDeveloper Tools
The terminal, gcc and its warnings, error messages, header files, make, gdb, testing and Git: the tools around the code.
IntermediateObject-Oriented Programming in C++
Classes, constructors and destructors, operators, inheritance, virtual functions, templates, the STL and exceptions, with every object on screen.
AdvancedCompetitive Programming
Online judges and time limits, prefix sums, two pointers, binary search on the answer, greedy, DP and graphs with the STL, and contest math.
IntermediateOpen-Source Contribution
Licenses, reading a codebase you did not write, issues and bug reports, pull requests, code review and style, and a first contribution to StepVioz.
IntermediateDiscrete Mathematics
Logic and proofs, induction, sets, functions and relations, counting, recurrences, number theory, RSA and graphs, every idea checked with Python.
IntermediateDatabase Management Systems
Tables and SQL: queries, joins, grouping, keys, subqueries, ER design, normalization, relational algebra, indexes and transactions, on a real database in your browser.
IntermediateOperating Systems
Processes and threads, CPU scheduling, synchronization, deadlock, memory, paging, virtual memory, file systems and disks, with a simulator for every algorithm.
AdvancedMachine Learning
Learning from data in plain Python: regression and gradient descent, k-NN, metrics, logistic regression, Naive Bayes, decision trees, k-means and the perceptron.
AdvancedCoding Interview Prep
How coding interviews work, and the patterns behind most questions: hashing, two pointers, sliding windows, stacks, binary search, lists, trees, graphs, DP and backtracking.
IntermediateComputer Networks
How the internet works, layer by layer, with Python and simulators: delay, error detection, Ethernet and switches, IP addressing and subnetting, routing, TCP and UDP, reliable delivery, congestion control, DNS and HTTP.
IntermediateDigital Logic Design
From logic gates to state machines, simulated in Python: Boolean algebra, canonical forms, Karnaugh maps, universal gates, adders, multiplexers, flip-flops, counters, finite state machines and memory.
IntermediateComputer Architecture
How a processor really works, simulated in Python: the instruction cycle, instruction sets, performance, hardware arithmetic, the datapath, pipelining and hazards, caches and the memory hierarchy, I/O and interrupts, and multicore.
Advanced8086 Assembly Language
Program the processor itself in 8086 assembly, watching every register and flag change: MOV and the data segment, arithmetic and the flags, DOS input and output, comparisons and jumps, loops, MUL and DIV, bits and shifts, arrays and addressing modes, the stack, procedures and strings.
IntermediateProbability and Statistics
Chance and data, computed in Python: counting, conditional probability, Bayes, expected value, the binomial and normal distributions, sampling, confidence intervals, hypothesis tests and regression.
IntermediateCalculus and Linear Algebra
The maths under graphics, machine learning and simulation, computed in Python: limits, derivatives, optimization, integrals and series, then vectors, matrices, linear systems, determinants, transformations and eigenvalues.