Expected Learning

00 / C

Learn memory, the debugger and the buildgraded by the real tools

Segfaults, races, and the debugger that actually catches them - 186 lessons graded by gdb/lldb and your compiler's real exit code.

Early access

* c -- assert TESTED
test output
expected: Expected Learning for C actual: Expected Learning for C PASSED - 186 lessons built. Store not yet open.
PASSED 186 lessons built.
186 lessons
26 free forever
9 tracks
TESTED status

01 / what grades you

Grading runs the real tools the job actually uses, in the copy of VS Code you already have open - not a simulated sandbox and not a recording.

When a lesson says PASSED, that verdict came from the real debugger, the real test runner, or a real service running on your machine.

02 / the free tier

26 free lessons, forever

No account. No card.. the free tier makes zero network calls, answers ship encoded and are released one failed attempt at a time, and your progress is a local file you can read and delete. no accounts, no telemetry, no subscription.

03 / syllabus

* your first breakpoint FREE
try it now

Lesson 1 of 26 free. Opens in your own VS Code - free forever.

Store not yet open What to expect on your machine

186 lessons across 9 tracks

Debugging with GDB

30 lessons / 8 free

Your first breakpointFREE/Stepping through codeFREE/Reading the call stackFREE/Reading a backtraceFREE/Conditional breakpointsFREE/Watchpoints: break when memory changes Linux/Windows only/Inspecting memory directlyFREE/Printing structs and pointersFREE/Your first segfaultFREE/Reading a core dump WSL on Windows + macOS/The stack smash WSL on Windows + macOS/Stepping into code you do not own/Debugging a failing test/The uninitialized read/The dangling pointer/The buffer overflow/The off-by-one/The infinite loop/The deadlock/A race you can catch every time/Attaching to a running process/Debugging inside Docker WSL on Windows/Optimized-out variables/Asserts as tripwires/The leak hunt WSL on Windows + macOS/The double free WSL on Windows + macOS/The use-after-free WSL on Windows/The misaligned cast WSL on Windows/The heisenbug WSL on Windows/Capstone

C language

34 lessons / 2 free

Compile, link, runFREE/Variables and typesFREE/printf and scanf/Operators and precedence/Control flow/Functions properly/Scope and storage classes/Arrays/Strings, the honest way/Pointers: the first contact/Pointer arithmetic/Pointers and arrays together/Structs/typedef/Enums/Unions/malloc and free/Ownership discipline/Two-dimensional data/Function pointers/const correctness/Header files and includes/The preprocessor/Macro pitfalls/Casting/Integer promotion traps/Floating point honestly/Bit manipulation/Command-line arguments/File IO/errno and error handling/The standard library tour/A linked list from scratch/Capstone: a real CLI tool

Git 37 lessons / 2 free

Repo anatomyFREE/The three areasFREE/Commits done well/Ignoring the right things/Branching/Two kinds of merge/The conflict/Branch lifecycle/Amend/Rebase onto a moved main/Squash and fixup/Reword, reorder, drop/Cherry-pick and revert/Reflog, the undo of undos/Reset: soft, mixed, hard/Stash/Bisect/Remotes: clone, fetch, pull, push/Pull with rebase/Force with lease, and tags/The feature workflow/Capstone: inherit the mess/What a commit really is/Trees, blobs and refs/The index unmasked/Submodules without tears/Worktrees/Large files and history bloat/Attributes that save releases/Hooks that guard the gate/Signed work/Rebase with a robot/Autosquash discipline/The reverted merge trap/Detached HEAD, no fear/Archaeology/Capstone: the inherited repo

Testing 12 lessons / 3 free

Your first unit testFREE/Assertions that read wellFREE/A test runner that scalesFREE/Fixtures: setup and teardown/Table-driven tests/Testing the failure paths/Stubbing a dependency/Mocking with function pointers/Sanitizers in the test loop/Coverage, honestly/The regression test/TDD capstone

Memory 16 lessons / 2 free

Stack vs heap, for realFREE/Valgrind: the first run WSL on Windows + macOS/Finding the leak WSL on Windows/Use-after-free with ASanFREE/The double free/Uninitialized memory WSL on Windows + macOS/Buffer overflows, found not feared/Alignment and padding WSL on Windows/Ownership patterns that scale/Arena allocation/realloc without tears/Memory-mapped files WSL on Windows/Cache-friendly layout/A custom allocator/Fragmentation/Capstone: the leak hunt WSL on Windows

Build and link 12 lessons / 2 free

gcc flags that matterFREE/Warnings as errorsFREE/Object files and translation units/Static libraries/Dynamic libraries/make: the first Makefile WSL on Windows/make patterns and variables/CMake: the first build/CMake targets done right WSL on Windows/Linker errors, decoded/Sanitizers in the build WSL on Windows/Reproducible builds

Data structures 18 lessons / 3 free

A dynamic arrayFREE/The linked listFREE/The doubly linked listFREE/A stack/A queue/A hash table/Hash collisions/A binary tree/The binary search tree/Tree traversal/A heap and priority queue/Quicksort/Mergesort/Binary search/String algorithms/Graphs: adjacency/BFS and DFS/Capstone: pick the right structure

Systems 16 lessons / 2 free

ProcessesFREE/fork and execFREE/Pipes/Signals/Files and file descriptors/stat, directories, the filesystem/A TCP client/A TCP server/UDP/select and poll/Threads with pthreads/Mutexes/Condition variables/Shared memory/mmap/Capstone: a mini shell

Infrastructure 11 lessons / 2 free

Docker imagesFREE/Docker composeFREE/Debugging in containers/Redis basics/Redis as a cache/Kubernetes deploy/Debug a pod/Config and secrets/Multi-stage builds: 800MB to 5MB/Volumes and persistence/Crash forensics: the core dump

04 / how it grades you

step 01

Do the work

Open the lesson in VS Code and write the fix, the query, or the test - in your own editor, with your own tools.

step 02

The real tool checks it

The debugger, the test runner, or the real service your code talks to decides pass or fail - not a string match on your keystrokes.

step 03

Hints, then the solution

Stuck lessons escalate through hints before the reference solution unlocks - spoilers are earned, not browsable.

05 / your machine

What to expect on your machine

By track, per operating system

By track, per operating system
TrackWindowsmacOSLinux
Debugging with GDB (30) 22/30 8 skip25/30 5 skip30/30
C language (34) 34/3434/3434/34
Git (37) 37/3737/3737/37
Testing (12) 12/1212/1212/12
Memory (16) 10/16 6 skip14/16 2 skip16/16
Build and link (12) 9/12 3 skip12/1212/12
Data structures (18) 18/1818/1818/18
Systems (16) 0/1616/1616/16
Infrastructure (11) 11/1111/1111/11

generated from manifests, 2026-08-29

CI-proven Windows

CI-verified on Windows, WSL, Linux and Apple Silicon macOS (M-series - the debugger and every track run green there); store not yet open.

Store not yet open 26 free lessons are ready right now.

06 / receipts

Receipts

Receipts are claims paired with evidence. The changelog carries the dated record.

PASS the exam is a live GDB sessiongoals tick only when the Debug Adapter Protocol reports the breakpoint hit, the line reached, the variable inspected - by you; the follow-up quiz is graded by hash, so the answer is not sitting in a file

PASS answers are earned, never browsablesolutions, explanations and hints ship encoded; the coach releases them one failed attempt at a time

PASS the paid edition is encrypted, and the encrypted buyer walk is CI-proven on three OSesthe full curriculum ships as an encrypted pack that only unlocks under your licence; CI already walks the paid lessons the way a buyer would - decrypt, grade, done - on Windows, macOS and Linux (Linux runs all of them; Windows and macOS run every lesson their tools support). What is left to prove: the release job that seals the download, and the Windows clean-up the moment you leave a lesson

PASS your progress is a file you ownno account - export it and import it from the Command Palette when you change machines

PASS your toolchain is checked, not assumedthe environment doctor reads each tool's version - gcc, gdb, make, cmake, git, node - not just whether it is installed, and tells you exactly what to add or upgrade before a lesson can trip on it, in one command

PASS zero minutes of videonothing to watch; everything to do