Expected Learning

00 / Python

Learn debugging, git and real servicesgraded by the real tools

From a hung deadlock to a broken migration - 180 lessons graded by pdb, pytest, and a real Postgres, not string matching.

Early access

* python -- assert TESTED
test output
expected: Expected Learning for Python actual: Expected Learning for Python PASSED - 180 lessons built. Free lessons CI-proven on Windows, macOS and Linux; the full edition CI-proven on macOS and Linux, Windows in verification. Launching soon.
PASSED 180 lessons built.
180 lessons
20 free forever
8 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.

PROOF 161 lessons verified stub-fails-solution-passes, 0 failures; the other 19 are quizzes and observation lessons, skipped by design, not by accident

02 / the free tier

20 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 20 free. Opens in your own VS Code - free forever.

Store not yet open What to expect on your machine

180 lessons across 8 tracks

Debugging

30 lessons / 8 free

Your first breakpointFREE/Stepping through codeFREE/Reading the call stackFREE/Reading tracebacksFREE/Conditional breakpointsFREE/Watch expressionsFREE/Exception breakpointsFREE/LogpointsFREE/Debugging a live HTTP request/Which layer dropped the field/The silently None field/The service will not start/Debugging scheduled code/Debugging a failing test/Async stack traces/A race you can catch/The blocked event loop/Threads, one at a time/Memory: who ate it/Stepping into libraries/Remote attach into Docker/Two processes, one debugger/The mutating total/Timeouts and retries/Contract mismatch/One request id, two logs/The lost task/The vanishing money/The read that lies/Capstone: the wrong total

Python

33 lessons / 2 free

Variables and typesFREE/Strings and f-stringsFREE/Control flow/Functions, properly/Your first class/Dunder methods/Dataclasses/Modules and imports/Virtual environments/pip and packaging/Comprehensions/Iterators/Generators/Decorators/async and await/The match statement/Context managers/Exceptions/None and optionals/Equality and identity/Mutability traps/Typing basics/Protocols and generics/Narrowing with mypy/Collections in depth/Sorting and keys/pathlib and files/JSON in and out/Enough regex/Calling APIs with httpx/A proper CLI/Datetimes/Logging

Git 37 lessons / 2 free

Your first repositoryFREE/The three areasFREE/Good commits/gitignore/Branch and switch/Fast-forward merge/The conflict/Branch lifecycle/Amend the last commit/Rebase onto moved main/Squash commits with rebase -i/Drop a commit with rebase -i/Cherry-pick and revert/Recover with reflog/Reset: soft, mixed, hard/Stash work in progress/Find a regression with bisect/Push to a remote/Pull with rebase/Tags and releases/The feature-branch workflow/Capstone: deliver clean history/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/Grand capstone: the inherited repo

Testing craft 10 lessons / 1 free

Your first testFREE/Fixtures/Parametrize/Testing exceptions/monkeypatch/Mock objects/Floating point with approx/Temporary files/Asserting on logs/Capstone: a full suite

SQL 30 lessons / 2 free

Your first queryFREE/Numeric, not floatFREE/Inserting rows/SELECT and WHERE/DISTINCT and ORDER BY/GROUP BY and aggregates/HAVING vs WHERE/CASE expressions/INNER JOIN/LEFT JOIN and NULL/The fan-out trap/Self-join/Anti-joins and NOT IN/INSERT ... RETURNING/Constraints and ON DELETE/UPSERT with ON CONFLICT/NULL and three-valued logic/Transactions and deadlocks/SQL injection/Subqueries and CTEs/Set operations/Dates and generate_series/Window functions/Views/JSONB/Indexes and EXPLAIN/Fix the slow query/Recursive CTEs/Schema design/Capstone: the revenue report

APIs 16 lessons / 2 free

Your first endpointFREE/Path parametersFREE/Query parameters/Request body with Pydantic/Response models/Validation with Field/Status codes/Error handling/Dependency injection/Async endpoints/Reading headers/Middleware/API key auth/Pagination/A database-backed endpoint/Capstone: a CRUD resource

Advanced backend 13 lessons / 1 free

Your first Celery taskFREE/Retries and dead letters/Scheduled jobs/Caching with Redis/Cache invalidation/Concurrent tasks with gather/Timeouts and cancellation/Threads, the GIL, and pools/WebSockets/Rate limiting/Feature flags/Metrics and observability/Capstone: the broken worker

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/Volumes and persistence/Crash forensics

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
Full curriculum not yet not yet not yet
Measured per-OS rows land here when the next full three-operating-system run completes and is reconciled on the delivery board. Until then the honest record is the prose above: macOS measured green across all 160 paid lessons, Windows at 140 of 160 and in verification, Linux not yet re-measured.

measuring, 2026-08-30

free lessons CI-proven, full edition in verification Windows

Every lesson grades green on Linux in CI, every commit. Free lessons walk green through the installed extension on Windows, macOS and Linux. The full edition - real licence key, real encrypted download - walks all 160 lessons green on macOS and Linux; not yet on Windows, so the paid edition stays in verification there. The last three-operating-system run was in July, and the git track's graders have been rewritten since. macOS goes on sale once it passes on real Apple hardware.

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

06 / receipts

Receipts

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

PASS every gradeable lesson carries a CI solvability proof161 lessons verified stub-fails-solution-passes, 0 failures; the other 19 are quizzes and observation lessons, skipped by design, not by accident

PASS the services are real, not simulatedSQL grades on a live postgres:16-alpine container, caching on a live redis:7-alpine, APIs on a real in-process FastAPI - if Docker is not running, the lesson tells you, honestly

PASS Python installs itselfuv provisions a pinned Python 3.12 and each lesson's dependencies - install to first green checkmark without touching a download page

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 there is no plaintext bundlethe full curriculum ships as an encrypted pack, built by the same packer CI runs; the build refuses to produce anything without a key rather than falling back to a readable zip, and every copy carries a per-buyer marker written into the lessons as they are unpacked. The shipped verifiers check the pack and the marker on Windows, macOS and Linux. The buyer's own walk through it - decrypt, grade, done - is measured green on macOS across all 160 paid lessons; the same run put Windows at 140/160, still in verification, as the status above says; the Linux leg was lost to an infrastructure outage in that run and has not yet been measured

PASS guided first run from a cold installa Start-here Lesson 0, an activation check that names any missing tool, a VS Code walkthrough and a one-click Prepare sandbox button

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

PASS zero minutes of videonothing to watch; everything to do

07 / questions

Do I need an account?

No. The extension is local. Your progress lives on your machine as a file you own, and exports and imports from the Command Palette when you change machines. No telemetry either.

What do I need installed?

VS Code, uv and git. uv provisions a pinned Python 3.12 and each lesson's dependencies, so Python itself is not a download you have to go and find. Docker is needed only by the 33 lessons that grade against a real service, and not even then if you already run a Postgres and Redis. The environment doctor checks the lot in one command.

Does my operating system get the whole course?

The curriculum, yes - no lesson is gated by your operating system, on any of the three. What differs is how much we have proven: the free lessons are CI-proven through the installed extension on Windows, macOS and Linux, and the full edition on macOS and Linux, with Windows still in verification. It is on this page rather than in a support thread.

Can I see the answers?

Each lesson coaches you with escalating hints before it will reveal a reference solution, and solutions ship encoded rather than sitting in a file next to the exercise. Spoilers are earned, not browsed.

I use AI to code. Is this for me?

Especially you. Use the AI - ship faster. But when the stack trace arrives, autocomplete goes quiet. These are the skills that answer.