A concept-first programming course

Learn how programs work and how programmers solve problems.

The ideas here — state, control flow, decomposition, data structures, objects — are the same across every programming language. This course teaches those ideas directly, and always shows them in Python because its plain syntax stays out of the way. Every lesson tells you which part is the transferable concept and which part is simply how Python happens to write it.

Four strands, one way of thinking

Try a prediction question

Lessons regularly ask you to predict what a short program will do before you find out — a habit that builds a real mental model instead of pattern-matching on syntax.

What does this print? score = 10 score = score + 5 print(score)
Or reveal the answer without checking

Answer:15
Assignment evaluates the right-hand side first (10 + 5), then stores the result in score. The name score is reused, not duplicated.

Who this is for

You're new to programming

Start at the beginning — every idea is introduced before it's used, and nothing assumes prior experience.

You've seen Python but get stuck

If you can read code but freeze on a blank problem, the algorithmic-thinking strand is built for you.

You're moving between languages

Every lesson separates the general idea from Python's specific syntax, so the concepts transfer with you.

How the lessons work

Each lesson follows the same shape: a mental model first, a small worked example, a trace of the program's state, a common misconception, a prediction or check, scaffolded practice, and a plain-language summary. Content is readable at any zoom level, fully usable by keyboard, and never relies on color alone to convey meaning.