Free and open source

Learn to code, one clear step at a time.

Short lessons with examples you can run and change right in your browser. Practise with exercises that check your answer. No account, no installs, no paywall.

  • 32 courses
  • 330 lessons
  • 135 checked exercises

New to programming? Start here.

Pick one course and follow it in order. Each lesson takes about 10 to 20 minutes.

Try it now

This is what every lesson looks like: real code you can edit and run. Python loads the first time you press Run, which takes a few seconds.

# This is real Python, running in your browser.
# Change the list, then press Run (or Ctrl+Enter).
groceries = ["apples", "bread", "milk", "apples", "eggs", "milk", "apples"]

counts = {}
for item in groceries:
    counts[item] = counts.get(item, 0) + 1

for item, n in sorted(counts.items(), key=lambda pair: -pair[1]):
    print(f"{item:<7} {'#' * n} {n}")
Python (loads on first run)Ctrl+Enter runs
Output
Press Run (or Ctrl+Enter) to execute this code in your browser.

How the lessons work

Every lesson follows the same simple pattern, so you always know what comes next. More about the approach

  1. 1

    Read and run

    A short explanation, then an example you can run and change. Underlined words open a quick definition.

  2. 2

    Clear up common mix-ups

    Each lesson answers the question beginners most often get wrong, with the reasoning spelled out.

  3. 3

    Practise and check

    Exercises tell you which part passed and which did not. Hints and a solution are there if you get stuck.

All courses

Grouped by what they are for. Beginners: pick one from the first row.