Foundations
The ideas every machine shares.
Explore what a program does, how a machine counts and how your instructions reach it. Pseudocode, diagrams and worked examples keep the ideas independent of any one language. You need no programming experience to begin. Follow the groups in order, visit a subject that interests you, or return when a game raises a question. You can start a system track without completing Foundations first.
Programming
What a program is. Follow these five in order, or visit an idea when you need it.
- 01
The Basics
What a program is, before any machine or language: instructions in order, a way to show things, a place to remember, and a way to ask.
Start → - 02
Working It Out
The computer does arithmetic on values it did not have when you wrote the program, grows a box from its own value, and decides what to do with a leftover.
Start → - 03
Decisions
A program that reacts: test a value, choose between paths, keep a yes or no in a box, and join questions together.
Start → - 04
Repeating
Three kinds of loop: a set number of times, until something happens, and only while something holds. The second one is the shape of every game.
Start → - 05
Structure
Lists, jobs with names, jobs that take a value and hand one back, and the one skill that separates getting it done from getting stuck.
Start →
Numbers
How a machine counts. For anyone heading down to a machine, and sooner than you might think.
- 01
Counting in Twos
How a machine counts: binary, hex, two bytes together, and a minus sign made of nothing but switches.
Start → - 02
Working the Bits
The tools that change a byte one switch at a time, slide the whole row, turn a letter into a number, and carry a fraction on a machine that only counts in whole steps.
Start →
The machine underneath
What it is made of, and how your program reaches it. Three modules that gate nothing.
- 01
Truth Tables
A way to write down every case a question can have, so you can see that two different-looking tests are the same test.
Start → - 02
Gates and the Adder
The same truth tables, built out of wire, and then wired into something that adds. This is where a machine stops being magic.
Start → - 03
From Source to Silicon
The instructions you write are not the instructions the machine runs. Something translates, and when it does the translating is the difference between a game that keeps up and one that cannot.
Start →
After foundations
Then pick a machine.
Once you know what a program is, the next step is a real computer. Pick one, meet it, then meet the language you will write it in. If you are heading for BASIC, you can go now and come back to the number modules when you need them. If you are heading for assembly, take Counting in Twos and Working the Bits with you first. And if you already think in variables and loops, skip straight to a machine.