Status tracker for every phase and lesson. The status glyphs in this file feed
the website (site/build.js parses them into site/data.js); do not change
their shape.
Total: 421 lessons across 20 phases, ~706 hours at your own pace.
Legend: ✅ Complete · 🚧 In Progress · ⬚ Planned
| # | Lesson | Status | Est. |
|---|---|---|---|
| 01 | The CS Toolchain — What You'll Install and Why | ✅ | ~45 min |
| 02 | Terminal, Shell, Pipes, Job Control | ✅ | ~60 min |
| 03 | Git Deep — Internals, Refs, Rebase, Bisect | ✅ | ~90 min |
| 04 | C/C++ Toolchain — gcc, clang, ld, ar, make | ✅ | ~75 min |
| 05 | Rust Toolchain — cargo, rustup, build profiles | ✅ | ~60 min |
| 06 | Build Systems — Make, CMake, Bazel, Cargo | ✅ | ~75 min |
| 07 | Debuggers — gdb, lldb, rust-gdb, core dumps | ✅ | ~75 min |
| 08 | Profilers — perf, valgrind, instruments, flamegraphs | ✅ | ~75 min |
| 09 | Editor Setup — Neovim/VS Code with LSP, DAP | ✅ | ~60 min |
| 10 | Linux for Builders — proc, sys, cgroups, namespaces | ✅ | ~75 min |
| 11 | Docker & Devcontainers for CS Work | ✅ | ~60 min |
| 12 | Documentation & Diagrams — Markdown, Mermaid, plantuml | ✅ | ~45 min |
| # | Lesson | Status | Est. |
|---|---|---|---|
| 01 | What Is a Program, Really (Compilation, Linking, Loading) | ✅ | ~60 min |
| 02 | Values, Types, Variables, Scope | ✅ | ~45 min |
| 03 | Control Flow — Branches, Loops, Recursion | ✅ | ~60 min |
| 04 | Functions, the Stack, and Calling Conventions | ✅ | ~75 min |
| 05 | Pointers, Addresses, and Indirection (in C) | ✅ | ~75 min |
| 06 | The Heap — malloc, free, fragmentation | ✅ | ~75 min |
| 07 | Arrays, Strings, and Bounds | ✅ | ~60 min |
| 08 | Structs, Unions, Bitfields, Alignment | ✅ | ~60 min |
| 09 | Errors — Returns, errno, exceptions, Result types | ✅ | ~60 min |
| 10 | Ownership and Borrowing — the Rust model | ✅ | ~75 min |
| 11 | Lifetimes, References, RAII | ✅ | ~75 min |
| 12 | Generics, Traits, Polymorphism | ✅ | ~75 min |
| 13 | Modules, Packages, Linkage | ✅ | ~45 min |
| 14 | The Preprocessor and Macros (C, Rust) | ✅ | ~45 min |
| 15 | Build a Pool Allocator (from scratch in C) | ✅ | ~90 min |
| 16 | Build a Bump and Arena Allocator (in Rust) | ✅ | ~90 min |
| 17 | Defensive Programming — Asserts, Invariants, ASAN/UBSAN | ✅ | ~60 min |
| 18 | Phase Capstone — A Tiny Manual-Memory Library | ✅ | ~75 min |
| # | Lesson | Status | Est. |
|---|---|---|---|
| 01 | What Counts as Computation? | ✅ | ~45 min |
| 02 | Finite Automata — DFAs | ✅ | ~60 min |
| 03 | NFAs and Subset Construction | ✅ | ~60 min |
| 04 | Regular Expressions ↔ Automata | ✅ | ~75 min |
| 05 | Build a Regex Engine (Thompson construction) | ✅ | ~90 min |
| 06 | Pumping Lemma for Regular Languages | ✅ | ~45 min |
| 07 | Context-Free Grammars | ✅ | ~60 min |
| 08 | Pushdown Automata & CFG Equivalence | ✅ | ~75 min |
| 09 | Chomsky and Greibach Normal Forms | ✅ | ~60 min |
| 10 | Parsing Theory — CYK and Earley | ✅ | ~75 min |
| 11 | Turing Machines & Variants | ✅ | ~75 min |
| 12 | Build a Turing Machine Simulator | ✅ | ~75 min |
| 13 | Decidability and the Halting Problem | ✅ | ~60 min |
| 14 | Rice's Theorem & Undecidable Properties | ✅ | ~60 min |
| 15 | Time Complexity Classes — P, NP, EXP | ✅ | ~60 min |
| 16 | NP-Completeness — Cook-Levin and Reductions | ✅ | ~90 min |
| 17 | Space Complexity — L, NL, PSPACE, Savitch | ✅ | ~75 min |
| 18 | Phase Capstone — A Toy Proof Assistant for Reductions | ✅ | ~90 min |
| # | Lesson | Status | Est. |
|---|---|---|---|
| 01 | Pixels, Colors, Gamma | ✅ | ~45 min |
| 02 | The Graphics Pipeline at 30,000 ft | ✅ | ~45 min |
| 03 | Linear Algebra for Graphics — Transforms, Projections | ✅ | ~75 min |
| 04 | Rasterization I — Lines and Triangles | ✅ | ~75 min |
| 05 | Rasterization II — Z-buffer, Clipping, Culling | ✅ | ~75 min |
| 06 | Shading Models — Lambert, Phong, Blinn-Phong | ✅ | ~60 min |
| 07 | Physically Based Rendering — BRDF, Microfacet | ✅ | ~90 min |
| 08 | Shaders 101 — Vertex and Fragment | ✅ | ~75 min |
| 09 | Build a Software Rasterizer (in Rust) | ✅ | ~120 min |
| 10 | Ray Tracing I — Whitted Style | ✅ | ~90 min |
| 11 | Ray Tracing II — Path Tracing, Monte Carlo | ✅ | ~90 min |
| 12 | Acceleration Structures — BVH, kd-Tree | ✅ | ~75 min |
| 13 | Real-Time Techniques — Deferred, Tiled, Cluster | ✅ | ~75 min |
| 14 | Modern APIs — Vulkan, Metal, WebGPU compared | ✅ | ~60 min |
| 15 | Compute Shaders for Non-Graphics Work | ✅ | ~60 min |
| 16 | Animation, Skinning, IK | ✅ | ~60 min |
| 17 | Visualization — D3, deck.gl, scientific plotting | ✅ | ~45 min |
| 18 | Phase Capstone — A Path Tracer + a Triangle Rasterizer | ✅ | ~180 min |
| # | Lesson | Status | Est. |
|---|---|---|---|
| 01 | Why We Test (and what tests don't prove) | ✅ | ~45 min |
| 02 | Unit, Integration, E2E — Pyramid vs Trophy | ✅ | ~60 min |
| 03 | Test Doubles — Stubs, Mocks, Fakes, Spies | ✅ | ~60 min |
| 04 | Property-Based Testing — QuickCheck, Hypothesis | ✅ | ~75 min |
| 05 | Fuzz Testing — libFuzzer, AFL++, structured fuzzing | ✅ | ~90 min |
| 06 | Mutation Testing | ✅ | ~60 min |
| 07 | Coverage — What It Tells You and What It Doesn't | ✅ | ~45 min |
| 08 | Contracts and Design by Contract | ✅ | ~60 min |
| 09 | Hoare Logic — Pre/Post/Invariant | ✅ | ~75 min |
| 10 | Separation Logic Primer | ✅ | ~75 min |
| 11 | Model Checking — TLA+ Hands-On | ✅ | ~120 min |
| 12 | TLA+ for Distributed Protocols | ✅ | ~90 min |
| 13 | Alloy and Lightweight Modeling | ✅ | ~75 min |
| 14 | SMT Solvers — Z3 in Practice | ✅ | ~75 min |
| 15 | Symbolic Execution — KLEE, angr | ✅ | ~75 min |
| 16 | Proof Assistants — Coq/Lean/Isabelle Primer | ✅ | ~90 min |
| 17 | Verified Software — seL4, CompCert, etc. | ✅ | ~60 min |
| 18 | Phase Capstone — Specify, Model-Check, and Prove a Lock-Free Algorithm | ✅ | ~150 min |
| # | Lesson | Status | Est. |
|---|---|---|---|
| 01 | What 'Paradigm' Means (and Doesn't) | ✅ | ~45 min |
| 02 | Lambda Calculus — Reduction, Encodings | ✅ | ~90 min |
| 03 | Simply Typed Lambda Calculus | ✅ | ~75 min |
| 04 | Polymorphism — System F, ML, Bounded Quantification | ✅ | ~75 min |
| 05 | Type Inference — Hindley-Milner Reconstruction | ✅ | ~90 min |
| 06 | Subtyping, Variance, Higher-Kinded Types | ✅ | ~75 min |
| 07 | Dependent Types — A Tour | ✅ | ~75 min |
| 08 | Linear and Affine Types — Rust's Lineage | ✅ | ~60 min |
| 09 | Algebraic Effects vs Monads | ✅ | ~75 min |
| 10 | Functional Programming Deep — Haskell Idioms | ✅ | ~75 min |
| 11 | OOP Deep — Inheritance, Composition, Mixins, Traits | ✅ | ~60 min |
| 12 | Logic Programming — Prolog and Unification | ✅ | ~75 min |
| 13 | Dataflow and Reactive — RxJS, FRP | ✅ | ~60 min |
| 14 | DSL Design — Internal and External | ✅ | ~60 min |
| 15 | Phase Capstone — A Bidirectional Type-Checker for STLC + Extensions | ✅ | ~150 min |