Interactive lessons
Discover it yourself.
Learn by solving problems, one step at a time.
Fields
The same way of learning in every subject. More fields are on the way.
ABC of
Programming
Build the systems you use every day, starting with an interpreter, until nothing about them is magic.
- Build an Interpreter
- Build Hangman
- Build a Compiler · coming soon
- Build a JavaScript Runtime · coming soon
ABC of
Mathematics
Invent the ideas before you name them, starting with negative numbers.
- Invent Negative Numbers
How the lessons work
You learn by working through problems, not by being told.
- 01
Start with a problem
Each module opens with a problem that needs something new. The idea arrives when the problem calls for it, not because it's next in a syllabus.
- 02
One step at a time
Every step builds on the last and is checked as you go: tests for code, visible consequences for a proof. Extra steps are there if you want to go further.
- 03
Own the result
You end up with a working interpreter, a finished proof, or an idea you could rebuild on paper. You made every part, so nothing in it is hidden from you.
Who this is for
Anyone who would rather work something out than be told the answer.
You might be meeting an idea for the first time. You might have used it for years without knowing why it works, or passed the exam without being able to rebuild it. Either way, you begin with a problem and whatever you already know. Each lesson asks you to think it through, not to know the answer already.
And if you simply enjoy taking things apart to see how they work, you belong here too.
Pick up where you left off
Make an account to keep your progress across lessons and devices.