About this course

Seven days. Twenty-eight lessons. Every one of them runnable in your browser.

Who it is for

People who have never programmed, and people who program in another language and want Python quickly. It assumes nothing beyond being able to read English and use a browser.

If you already write Python comfortably, this is not for you — though Day 6 and Day 7 may still fill in corners.

How it is meant to be used

Read a lesson, then change the code in it. Not the exercise at the end — the examples in the middle. Break them deliberately, and read the error. The people who learn a language fastest are the ones who treat every example as a thing to poke rather than a thing to finish.

One day a day for a week is the intended pace, and 28 lessons in a long weekend is perfectly possible. What matters is doing them in order — every day leans on the one before it.

What it leaves out

A great deal, on purpose. There is nothing here on async, decorators beyond @dataclass and @property, metaclasses, regular expressions, threading, or the C API. None of it is needed to write useful Python, and all of it is easier to learn once the essentials are second nature.

The last lesson points at where to go for each of those.

How the code runs

Every editor on this site is a code-playpad element — a CodeMirror editor wired to a Python runtime. That runtime is Pyodide: CPython 3.14 compiled to WebAssembly, with the standard library intact.

It runs in a Web Worker inside your own browser tab. There is no server executing your code, nothing is uploaded, and a runaway loop can be stopped without reloading the page. The interpreter downloads once — roughly 11 MB — and your browser caches it after that.

The consequences are worth knowing: no threads, no multiprocessing, no subprocess, and no raw sockets. Files you write live in a private in-memory filesystem that resets when the runtime does.

How the site is built

Static pages generated by Astro, with lessons written as MDX, styling from Tailwind, and full-text search by Pagefind. There is no backend and no tracking.

Corrections

Technical writing is never finished. If a lesson is wrong, unclear, or an example does not run, that is a bug worth reporting — the fastest way to improve a course is a reader who says which paragraph lost them.

Ready when you are

Day 1 starts with a one-line program.

Start Day 1