Learn System Design
Learn how large systems are designed, and how to explain your thinking in an interview. Start with estimates and core ideas, study the standard building blocks, then work through complete designs. Where an idea can be shown in code, a small Python program demonstrates it, with its real output.
Progress is saved in this browser. Accounts are coming later.
- Lessons available
- 27
- In the full course
- 27
- Beginner
Start from zero. No experience needed.
- Intermediate
Combine ideas to solve real problems.
- Advanced
The techniques used in professional work.
Course syllabus
All 27 lessons are available. Start anywhere, or follow the parts in order.
Part 1 · Beginner
Foundations
What system design is, how to approach an interview, and the core ideas: estimation, scaling, availability and consistency.
Part 2 · Intermediate
Building Blocks
The parts that nearly every large system is made from: load balancers, caches, databases, queues and APIs.
Part 3 · Advanced
Case Studies
Worked designs for the questions asked most often in interviews.
Part 4 · Intermediate
Interview Questions
Frequently asked system design interview questions with answers.
Keep going with System Design
Become a Better Programmer
Get new tutorials, coding challenges, and cheat sheets.