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

Beginner

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.

16 lessons · 48 problems · HTML
Beginner

CSS: 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.

16 lessons · 48 problems · HTML
Beginner

JavaScript: 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.

20 lessons · 60 problems · JavaScript
Beginner

C++ Programming

C++ from your first cout to references, strings, vectors, the standard library, templates and error handling, with every variable and object on screen.

16 lessons · 48 problems · C++
Beginner

Python Programming

From your first print() to classes, recursion and data structures.

40 lessons · 138 problems · Python
Beginner

Structured Programming in C

C as universities teach it: types, loops, arrays, strings, functions, pointers, structs and malloc, with every byte of memory on screen.

18 lessons · 57 problems · C
Intermediate

Data Structures

Lists, stacks, queues, trees, heaps, hash tables and graphs, built in C node by node, with every pointer drawn.

19 lessons · 60 problems · C
Intermediate

Algorithms

Searching, sorting, recursion, greedy choices, dynamic programming and graph algorithms, with the cost of each one counted.

18 lessons · 57 problems · C
Beginner

Foundations: 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.

8 lessons · 7 problems · C
Beginner

Developer Tools

The terminal, gcc and its warnings, error messages, header files, make, gdb, testing and Git: the tools around the code.

8 lessons · 4 problems · C
Intermediate

Object-Oriented Programming in C++

Classes, constructors and destructors, operators, inheritance, virtual functions, templates, the STL and exceptions, with every object on screen.

15 lessons · 48 problems · C++
Advanced

Competitive 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.

8 lessons · 9 problems · C++
Intermediate

Open-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.

6 lessons · 4 problems · Python
Intermediate

Discrete Mathematics

Logic and proofs, induction, sets, functions and relations, counting, recurrences, number theory, RSA and graphs, every idea checked with Python.

14 lessons · 11 problems · Python
Intermediate

Database 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.

15 lessons · 47 problems · SQL
Intermediate

Operating Systems

Processes and threads, CPU scheduling, synchronization, deadlock, memory, paging, virtual memory, file systems and disks, with a simulator for every algorithm.

12 lessons · 9 problems · C
Advanced

Machine 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.

13 lessons · 8 problems · Python
Advanced

Coding 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.

13 lessons · 20 problems · Python
Intermediate

Computer 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.

12 lessons · 8 problems · Python
Intermediate

Digital 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.

12 lessons · 8 problems · Python
Intermediate

Computer 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.

12 lessons · 8 problems · Python
Advanced

8086 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.

13 lessons · 9 problems · 8086
Intermediate

Probability 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.

12 lessons · 8 problems · Python
Intermediate

Calculus 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.

12 lessons · 8 problems · Python

Coming in Phase 5

Advanced

Theory of Computation

Coming in Phase 5

Advanced

Compiler Design

Coming in Phase 5

Advanced

Artificial Intelligence

Coming in Phase 5

Advanced

Deep Learning

Coming in Phase 5