5 modules · about 7 hours
The course
Each module ends in a kata you solve in the browser against real CPython, no local install, nothing to configure.
- 00Start hereWhat this course is, who it is for, and how the in-browser Python runtime works.
- 01Syntax Rosetta & memory foundations90 minMap ES6+ onto Python primitives, then unlearn the parts that look identical but are not: nullity, truthiness, identity vs equality, and what makes an object hashable.None vs null/undefined · is vs == · f-strings · slicing · comprehensions · EAFPKata: Debug mutable default arguments and broken object identity
- 02Scoping, closures & dunder protocols90 minReplace the prototype chain with Python's explicit object model. LEGB lookup, why closures need nonlocal, and the dunder methods that make your classes feel built-in.LEGB · nonlocal · *args/**kwargs · __len__ · __getitem__ · MRO · @propertyKata: Build a Pythonic DataBatch collection
- 03Asynchronous runtimes & concurrency75 minNode's event loop is always running; Python's is not. Coroutines are lazy where Promises are eager, and the GIL decides which concurrency primitive you actually want.asyncio.run · lazy coroutines · gather · TaskGroup · timeouts · the GIL · PEP 703Kata: Rate-limited concurrent fetcher with asyncio.Semaphore
- 04Typing, modern tooling & testing75 minTypeScript's structural types have direct analogues in Protocol and TypedDict. Then swap npm/ESLint/Prettier/Jest for uv, ruff and pytest.Protocol · TypedDict · Pydantic v2 vs Zod · discriminated unions · uv workspaces · PEP 723 scripts · ruff · pytest fixturesKata: A strict validated domain model with custom validators
- 05The AI engineering capstone90 minAssemble everything into the thing you came for: typed tool schemas, a numpy vector search over embeddings, and an agent loop that dispatches through a tool registry.structured output · cosine similarity · numpy · tool registry · agent loopKata: An in-browser agent that runs an embedding lookup tool