The usual first language. Readable, useful everywhere, and every example runs right here.
Start lesson 1Free 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.
Make a web page. Pair it with CSS and you can build a real site.
Start lesson 1Make web pages interactive. Runs in every browser.
Start lesson 1Ask questions of data. Queries run on a sample database in your browser.
Start lesson 1Try 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}")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
Read and run
A short explanation, then an example you can run and change. Underlined words open a quick definition.
- 2
Clear up common mix-ups
Each lesson answers the question beginners most often get wrong, with the reasoning spelled out.
- 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.
Good first languages Friendly languages to learn programming with.
Python
BeginnerA readable, general-purpose language for scripts, data and the web.
JavaScript
BeginnerThe programming language of the web, used in browsers and on servers.
TypeScript
IntermediateJavaScript with types, for catching mistakes before your code runs.
Ruby
BeginnerA readable, object-oriented scripting language, best known for web apps built with Rails.
Lua
BeginnerA small, simple scripting language used in games, mods and apps.
Build for the web Pages, styles, front-end frameworks and servers.
HTML
BeginnerThe markup language that gives every web page its structure.
CSS
BeginnerThe style sheet language that controls how web pages look.
Tailwind CSS
BeginnerA CSS framework built from small utility classes you apply directly in your HTML.
React
IntermediateA JavaScript library for building user interfaces from components.
Vue
IntermediateAn approachable JavaScript framework for building web interfaces.
Vite
IntermediateA fast development server and build tool for front-end projects.
Node.js
IntermediateA runtime for running JavaScript outside the browser, on servers and in tools.
PHP
BeginnerA server-side language for building websites and web apps.
Data and everyday tools Databases, version control and the command line.
SQL
BeginnerThe standard language for querying and changing data in relational databases.
Git
BeginnerA version control tool that records the history of your project.
How the Terminal Works
BeginnerHow the terminal and shell work, and what happens when you run a command.
Bash
BeginnerThe standard shell on Linux and macOS, used for commands and scripts.
PowerShell
BeginnerMicrosoft's cross-platform shell for automating Windows, Linux and macOS.
Apps and systems languages Compiled languages for apps, services and performance.
Go
IntermediateA small, fast, compiled language for servers, command-line tools and cloud services.
Rust
AdvancedA fast systems language that prevents memory bugs at compile time.
Java
IntermediateA statically typed, object-oriented language for Android apps and large backend systems.
Kotlin
IntermediateA concise, modern language for Android apps that runs on the JVM.
Swift
IntermediateApple's language for building iPhone, iPad and Mac apps.
C#
IntermediateA modern, typed language from Microsoft for apps, games and web services on .NET.
C++
AdvancedA fast, compiled language that builds on C with classes, templates and a large standard library.
C
IntermediateA small, fast systems language that shows you how computers really work.
How computers work The ideas underneath every program.
Data Structures & Algorithms
IntermediateCommon ways to organise data and solve problems efficiently.
How the Internet Works
BeginnerWhat happens between typing a URL and seeing the page.
Computer Architecture
AdvancedHow the hardware runs your code.
Operating Systems
AdvancedThe software that manages the hardware and runs your programs.
Compilers
AdvancedHow source code is turned into a program the computer can run.
Assembly
AdvancedThe human-readable form of the instructions a CPU actually runs.