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.

  1. 00Start hereWhat this course is, who it is for, and how the in-browser Python runtime works.
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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