Software, start to finish
From what software even is to designing real systems. Every lesson is a small machine you can step through, then a short quiz. No experience needed.
What software is
What a program is, how a computer runs one, what the operating system does and how everything becomes bits.
First steps in code
Writing instructions a computer can follow: values, decisions, repetition and reusable pieces.
-
Lesson 05 · 9 min
What code is: source, interpreters and compilers
9 stepsNot started -
Lesson 06 · 9 min
Variables and types
8 steps0/2 exercisesNot started -
Lesson 07 · 10 min
Making decisions: if and else
10 stepsNot started -
Lesson 08 · 10 min
Loops: doing things again
10 stepsNot started -
Lesson 09 · 10 min
Functions: reusable steps
10 stepsNot started -
Lesson 10 · 10 min
Debugging: finding what went wrong
10 stepsNot started
Data structures
Ways to organise data so programs can find and change it quickly.
-
Lesson 11 · 11 min
Arrays and lists
10 stepsNot started -
Lesson 12 · 10 min
Strings: text in memory
9 stepsNot started -
Lesson 13 · 11 min
Hash maps: finding things by key
10 stepsNot started -
Lesson 14 · 9 min
Stacks and queues
10 stepsNot started -
Lesson 15 · 10 min
Trees
10 stepsNot started -
Lesson 16 · 10 min
Graphs
11 stepsNot started
Algorithms
Step-by-step methods for solving problems, and how to tell which ones are fast.
-
Lesson 17 · 11 min
How fast is fast? Big O
11 stepsNot started -
Lesson 18 · 10 min
Searching: linear and binary
10 stepsNot started -
Lesson 19 · 11 min
Sorting
10 stepsNot started -
Lesson 20 · 10 min
Recursion
12 stepsNot started -
Lesson 21 · 12 min
Graph search: BFS and DFS
12 stepsNot started -
Lesson 22 · 12 min
Dynamic programming
12 stepsNot started
How programs really run
What happens under the hood: memory, translation, cleanup and doing many things at once.
-
Lesson 23 · 11 min
The stack and the heap
9 stepsNot started -
Lesson 24 · 12 min
Compilers and interpreters up close
10 stepsNot started -
Lesson 25 · 11 min
Garbage collection
12 stepsNot started -
Lesson 26 · 12 min
Threads and concurrency
12 stepsNot started -
Lesson 27 · 11 min
Async code and the event loop
10 stepsNot started
Designing code
Organising code so people can understand, change and reuse it.
Tools of the trade
The everyday tools engineers use to write, share, test and ship code.
-
Lesson 33 · 12 min
The command line
12 stepsNot started -
Lesson 34 · 10 min
Git: saving history
10 stepsNot started -
Lesson 35 · 12 min
Branching and merging
12 stepsNot started -
Lesson 36 · 10 min
Package managers and dependencies
10 stepsNot started -
Lesson 37 · 10 min
Unit testing
12 stepsNot started -
Lesson 38 · 10 min
Continuous integration
10 stepsNot started
Web and backend
How web apps are built: servers, APIs, databases and logins.
-
Lesson 39 · 10 min
How web apps work
11 stepsNot started -
Lesson 40 · 12 min
REST APIs
12 stepsNot started -
Lesson 41 · 12 min
Databases and SQL
11 stepsNot started -
Lesson 42 · 12 min
Indexes and transactions
12 stepsNot started -
Lesson 43 · 12 min
Logins: authentication and sessions
11 stepsNot started
Building systems
Making software fast, reliable, secure and easy to deploy at scale.
-
Lesson 44 · 12 min
Caching
10 stepsNot started -
Lesson 45 · 12 min
Message queues
10 stepsNot started -
Lesson 46 · 12 min
Scaling out
10 stepsNot started -
Lesson 47 · 12 min
Reliability and observability
11 stepsNot started -
Lesson 48 · 14 min
Secure coding: the common mistakes and their fixes
11 stepsNot started -
Lesson 49 · 12 min
Containers and deployment
12 stepsNot started
Engineering practice
How software engineers turn ideas into working systems, together.
Special topics
Stand-alone deep dives. Take them any time after the module they build on.
-
Lesson S1 · 12 min
Regular expressions
Builds on Data structures
10 stepsNot started -
Lesson S2 · 12 min
How machine learning works
Builds on Algorithms
10 stepsNot started -
Lesson S3 · 10 min
How mobile apps work
Builds on Web and backend
12 stepsNot started -
Lesson S4 · 10 min
Game loops and frames
Builds on How programs really run
11 stepsNot started -
Lesson S5 · 14 min
Inside a compiler
Builds on How programs really run
10 stepsNot started