Learn to code
Code
Write real code and see it run — HTML, CSS, Python, Java, C, SQL, LaTeX, and Linux — with nothing to install.
10 coursesHTML/CSS · Python · Java · C · SQL · LaTeX · LinuxRuns in your browser
Foundations
Python Basics
Your very first steps in programming — no experience needed.
15 Lessons
Python Basics
Your very first steps in programming — no experience needed.
A short history of Python
What Python is used for
Where to learn more
Set up your computer
Your first program
Variables
Numbers & operators
Getting input
Working with strings
Making decisions
Counting loops
While loops
Lists (1-D arrays)
Functions
Scope & arguments
Dictionaries (records)
Planning & pseudocode
Errors & testing
Putting it all together
Where to learn more
- freeCodeCamp — Learn Python Free, hands-on Python certification
- PyChallenger Learn Python by solving bite-size challenges
- CodeCombat Learn to code by playing a real game
- Official Python Tutorial The clear, free, step-by-step intro from python.org
- Python for Everybody (free course) A beloved beginner course by Dr. Chuck
- Visual Studio Code The free editor for writing Python on your own computer
- A-Level Computer Science (this site) Take Python further, toward the Cambridge exam
- AP CS Principles (this site) The big ideas of computing, in Python
JavaScript
The language of the web. Make things happen — runs right in your browser.
15 Lessons
JavaScript
The language of the web. Make things happen — runs right in your browser.
A short history of JavaScript
What JavaScript is used for
Where to learn more
Run JavaScript anywhere
console.log and comments
Variables — let and const
Numbers and maths
Strings
Template literals
Booleans and comparisons
if / else
for loops
while loops
Functions
Arrow functions
Arrays
Array methods
Objects
Putting it together
C Programming
From printf to pointers, memory, and data structures — compile and run in your browser.
23 Lessons
C Programming
From printf to pointers, memory, and data structures — compile and run in your browser.
A short history of C
What C is used for
Where to learn more
Set up your computer
C basics: main, printf, and functions
Variables, types, and arithmetic
Booleans and selection: if, else, switch
Loops: while, for, and accumulation
Functions, parameters, and return values
Nested loops and patterns
1-D arrays: store, index, and traverse
Pointers: &, *, and pass-by-pointer
Strings: char arrays and the null terminator
Array algorithms: max, count, search, average
2-D arrays: working with a grid
Searching: linear and binary
Sorting: bubble, selection, and insertion
Recursion: base case and recursive case
Structs and typedef: . vs ->
Dynamic memory: malloc, free, and realloc
Linked lists
Stacks and queues (array-backed)
Text files: write then read
Error handling with return codes
Bits, binary, and bitwise operators
Run-length encoding (compression)
Preprocessor, const, static, and enum
Where to learn more
- Learn-C.org Free, hands-on C lessons you run in the browser
- Exercism — C track Small exercises with friendly mentor feedback
- HackerRank — C Practice problems, from easy to hard
- cppreference — C The careful, free reference for every C function
- The C Programming Language (K&R) The classic book by the makers of C
- Visual Studio Code The free editor for writing C on your own computer
- C practice problems (this site) Extra C challenges to test yourself
- AP CS A (this site) Learn Java, another close cousin of C
Web Basics — HTML & CSS
Start from zero. Short steps. Build a real web page.
21 Lessons
Web Basics — HTML & CSS
Start from zero. Short steps. Build a real web page.
A short history of the web
What a web page is made of
Where to learn more
What you need (almost nothing)
Your first web page
Headings and paragraphs
Bold, italic and line breaks
Lists
Links
Images
Make it a real page
Comments and neat nesting
Tables
Forms
Boxes and sections
Add some style
Selectors — class and id
Colours and backgrounds
Styling text
The box model
Spacing — margin and padding
Showing and hiding (display)
Width and centering
Rows with Flexbox
Mini-project: a profile card
Where to learn more
- MDN — Learn web development The clear, free reference from Mozilla
- web.dev — Learn HTML A free, modern HTML course from Google
- web.dev — Learn CSS A free, modern CSS course from Google
- freeCodeCamp — Responsive Web Design Free, hands-on HTML + CSS certification
- W3Schools — HTML Tutorial Try-it-yourself examples for every tag
- Python Basics (this site) New to coding? Try Python next
Exam courses
Python for IGCSE CS
Programming, algorithms, databases and logic for Cambridge IGCSE 0478.
14 Lessons
Python for IGCSE CS
Programming, algorithms, databases and logic for Cambridge IGCSE 0478.
Python for A-Level CS
Data structures, algorithms, and OOP for Cambridge 9618.
15 Lessons
Python for A-Level CS
Data structures, algorithms, and OOP for Cambridge 9618.
Cambridge Pseudocode
Write and run the pseudocode used in IGCSE 0478 and A-Level 9618 exam answers.
14 Lessons
Cambridge Pseudocode
Write and run the pseudocode used in IGCSE 0478 and A-Level 9618 exam answers.
Python for AP CS Principles
Big ideas of computing — data, algorithms, the Internet, and impact.
15 Lessons
Python for AP CS Principles
Big ideas of computing — data, algorithms, the Internet, and impact.
What computing is
Bits and binary
Data compression
Variables and expressions
Lists and data abstraction
Selection
Iteration
Procedures and abstraction
Algorithms: searching
Randomness and simulation
Algorithmic efficiency
The Internet and how data travels
Parallel and distributed computing
Impact of computing
The Create Performance Task (guided)
Java for AP CS A
Java programming for the AP Computer Science A exam.
19 Lessons
Java for AP CS A
Java programming for the AP Computer Science A exam.
A short history of Java
What Java is used for
Where to learn more
Set up your computer
Java basics: classes, main, and output
Using objects: String, Math, and wrappers
Booleans and selection: if/else and logic
Loops: while, for, and accumulation
Strings and nested loops
Writing a class: fields, constructor, methods
Encapsulation: private fields, getters, setters
1-D arrays: store, index, and traverse
Array algorithms: max, count, search, average
ArrayList: a list that grows
ArrayList algorithms: filter and the remove bug
2-D arrays: working with a grid
Searching: linear and binary
Sorting: selection and insertion sort
Recursion: base case and recursive case
Text files: write and read with Scanner
Inheritance: extends, super, and overriding
Polymorphism: dynamic dispatch and toString()
FRQ workshop: the 4 question types
Where to learn more
- Exercism — Java track Free coding exercises with friendly feedback
- CodinGame Learn Java by solving fun coding games
- HackerRank — Java Short challenges, from easy to hard
- dev.java (official) The official Java site, with clear guides for learners
- The Java Tutorials Oracle's step-by-step lessons
- Visual Studio Code The free editor for writing Java on your own computer
- Java practice problems (this site) Exam-style questions to test your Java
- AP CS Principles (this site) The big ideas of computing, in Python
Topics & tools
Databases & SQL
Query, design, and change relational databases — right in your browser, no setup.
17 Lessons
Databases & SQL
Query, design, and change relational databases — right in your browser, no setup.
A short history of SQL
What SQL is used for
Where to learn more
Set up your computer
Databases and SELECT
Choosing columns
Filtering with WHERE
AND, OR, NOT
Sorting with ORDER BY
Counting and averaging
LIKE, IN and BETWEEN
Grouping with GROUP BY
Tables, keys and relationships
INNER JOIN
Joins with grouping
Creating tables
Changing the schema
Inserting rows
Updating rows
Deleting rows
Normalisation
Where to learn more
- SQLBolt Learn SQL step by step with interactive exercises
- SQLZoo Practice real queries on real tables in your browser
- Mode SQL Tutorial A friendly, hands-on tutorial from basic to advanced
- W3Schools SQL Short, clear pages for every SQL keyword
- PostgreSQL Tutorial A thorough guide using a popular database
- SQLite documentation The official docs for the database this course uses
- A-Level Computer Science (this site) Includes a unit on databases and SQL
Linux & the command line
Drive a computer by typing. Practise real shell commands in a safe in-browser terminal.
14 Lessons
Linux & the command line
Drive a computer by typing. Practise real shell commands in a safe in-browser terminal.
What is Linux?
Why learn the command line?
Helpful resources
Get a real terminal
01
The shell and the prompt
02
Moving around
03
Reading files
04
Creating and removing
05
Wildcards
06
Saving output to files
07
Pipes — joining commands
08
Searching with grep
09
Finding files with find
10
Sorting and columns
11
File permissions
12
Users and sudo
13
Programs and processes
14
Software, settings, next steps
Where to learn more
- explainshell Paste a command, see what every part does
- The man pages The official manual for every command
- tldr pages Short, practical examples instead of long manuals
- OverTheWire: Bandit Learn the shell by playing a hacking game
- Linux Journey A friendly, free Linux course
LaTeX
Typeset beautiful documents and maths — write LaTeX, compile on our servers, see the PDF.
14 Lessons
LaTeX
Typeset beautiful documents and maths — write LaTeX, compile on our servers, see the PDF.
What is LaTeX?
Where LaTeX is used
Helpful resources
Use LaTeX on your own computer
01
Your first document
02
Sections and titles
03
Bold, italic and emphasis
04
Bulleted and numbered lists
05
Maths — your first formula
06
Fractions, roots and sums
07
Aligning equations
08
Tables
09
Drawing with TikZ
10
Labels and cross-references
11
Citations and bibliography
12
Page layout and margins
13
Colour and links
14
Capstone: a one-page report
Cyber security
How attacks work and how to stop them — ciphers, hashing, and safe computing, hands-on.
16 Lessons
Cyber security
How attacks work and how to stop them — ciphers, hashing, and safe computing, hands-on.
What is cyber security?
Why it matters
Helpful resources
Nothing to install
01
Security, privacy and integrity
02
Malware
03
Attacks and brute force
04
Social engineering
05
Defending a system
06
Passwords and authentication
07
Storing passwords safely
08
Encoding is not encryption
09
Symmetric encryption
10
Asymmetric encryption
11
Hashing and digital signatures
12
HTTPS, SSL/TLS and certificates
13
Data integrity
14
SQL injection
15
Access control and least privilege
16
Ethics, law and staying safe
Where to learn more
- A-Level CS security handouts (this site) Topics 6 Security, 7 Ethics, 17 Encryption — exam revision
- IGCSE CS handouts (this site) Topics 2.3 Encryption and 5.3 Cyber security
- OWASP Top 10 The most common web security risks, explained
- picoCTF Learn security by solving fun challenges
- Have I Been Pwned Check if your email appeared in a data breach
Practice
Sharpen your skills with challenges from 1★ to 5★. Pick a language.
01
Print a word
★☆☆☆☆
02
Print another word
★☆☆☆☆
03
Print a sentence
★☆☆☆☆
04
Print with a !
★☆☆☆☆
05
Print two lines
★☆☆☆☆
06
Print three lines
★☆☆☆☆
07
Print a number
★☆☆☆☆
08
Print a bigger number
★☆☆☆☆
09
Add two numbers
★☆☆☆☆
10
Add bigger numbers
★☆☆☆☆
11
Subtract
★☆☆☆☆
12
Multiply
★☆☆☆☆
13
Divide
★☆☆☆☆
14
Remainder
★☆☆☆☆
15
Use a variable
★☆☆☆☆
16
A number variable
★☆☆☆☆
17
Change a variable
★☆☆☆☆
18
Add two variables
★☆☆☆☆
19
Multiply two variables
★☆☆☆☆
20
Join two words
★☆☆☆☆
21
Greet a name
★☆☆☆☆
22
Repeat text
★☆☆☆☆
23
Ask for a name
★☆☆☆☆
24
Echo a number
★☆☆☆☆
25
Your first function
★☆☆☆☆
26
Is it positive?
★☆☆☆☆
27
The bigger one
★☆☆☆☆
28
The last item
★☆☆☆☆
29
Is it even?
★☆☆☆☆
30
Sum a list
★☆☆☆☆
31
Reverse a string
★★☆☆☆
32
Count the vowels
★★☆☆☆
33
FizzBuzz
★★★☆☆
34
Letter frequencies
★★★☆☆
35
Remove duplicates
★★★☆☆
36
Second largest
★★★☆☆
37
Group anagrams
★★★★☆
38
Flatten a nested list
★★★★☆
39
RPN calculator
★★★★★
40
Run-length encoding
★★★★★
01
Print a word
★☆☆☆☆
02
Print another word
★☆☆☆☆
03
Print a sentence
★☆☆☆☆
04
Print with a !
★☆☆☆☆
05
Print two lines
★☆☆☆☆
06
Print a number
★☆☆☆☆
07
Add two numbers
★☆☆☆☆
08
Subtract
★☆☆☆☆
09
Multiply
★☆☆☆☆
10
Divide
★☆☆☆☆
11
Remainder
★☆☆☆☆
12
A number variable
★☆☆☆☆
13
A text variable
★☆☆☆☆
14
Add two variables
★☆☆☆☆
15
Your first method
★☆☆☆☆
16
Is it positive?
★☆☆☆☆
17
Cube a number
★☆☆☆☆
18
The smaller one
★☆☆☆☆
19
Square a number
★☆☆☆☆
20
Largest of three
★☆☆☆☆
21
Count the vowels
★★☆☆☆
22
Reverse the word order
★★☆☆☆
23
Palindrome check
★★★☆☆
24
Running sum
★★★☆☆
25
Most frequent character
★★★☆☆
26
Binary search
★★★☆☆
27
Factorial (mind the size)
★★★★☆
28
Count primes below n
★★★★☆
29
Roman numerals
★★★★★
30
Longest common prefix
★★★★★
01
Print a word
★☆☆☆☆
02
Print another word
★☆☆☆☆
03
Print a sentence
★☆☆☆☆
04
Print with a !
★☆☆☆☆
05
Print two lines
★☆☆☆☆
06
Print three lines
★☆☆☆☆
07
Print a number
★☆☆☆☆
08
Add two numbers
★☆☆☆☆
09
Subtract
★☆☆☆☆
10
Multiply
★☆☆☆☆
11
Remainder
★☆☆☆☆
12
A number variable
★☆☆☆☆
13
Add two variables
★☆☆☆☆
14
Multiply two variables
★☆☆☆☆
15
Your first function
★☆☆☆☆
16
Is it positive?
★☆☆☆☆
17
Cube a number
★☆☆☆☆
18
The smaller one
★☆☆☆☆
19
Square a number
★☆☆☆☆
20
Sign of a number
★☆☆☆☆
21
Largest of three
★★☆☆☆
22
Factorial
★★☆☆☆
23
Greatest common divisor
★★☆☆☆
24
Count the 1-bits
★★☆☆☆
25
Sum an array
★★★☆☆
26
Swap two values
★★★☆☆
27
String length
★★★☆☆
28
Count a character
★★★☆☆
29
Reverse in place
★★★★☆
30
Palindrome
★★★★☆
31
Bubble sort
★★★★☆
32
Points with a struct
★★★★☆
33
Binary search
★★★★★
34
Parse an integer
★★★★★