Skip to main content

Welcome to System Design Lab

System Design Lab is a free, structured course for learning system design — the kind of skill you need both to pass system design interviews and to actually build systems that hold up in production.

Most system design material comes in one of two flavors: dense academic papers, or shallow interview-prep listicles that hand you an answer to memorize without explaining why it's the answer. This course tries to sit in between. Every lesson explains a single concept in plain language, builds up the reasoning behind it, and then points you to the best deeper resources if you want to go further.

How the course is organized

The sidebar is organized into modules, and each module is a set of focused lessons:

  1. Core Concepts — the vocabulary (scalability, availability, CAP theorem, and friends) that every other module assumes you already know.
  2. Networking Fundamentals — how bytes actually get from one machine to another.
  3. API Fundamentals — how services expose functionality to clients and to each other.
  4. Database Fundamentals — storage, indexing, sharding, and replication.
  5. Caching Fundamentals — the highest-leverage tool for making systems fast and cheap.
  6. Asynchronous Communication — queues, pub/sub, and decoupling producers from consumers.
  7. Distributed Systems and Microservices — keeping many machines behaving like one reliable system.
  8. Architectural Patterns — the high-level shapes a system can take.
  9. System Design Tradeoffs — ten head-to-head comparisons you'll be asked to justify in interviews.
  10. Interview Practice — a framework for tackling any prompt, plus practice problems from easy to hard.

You don't have to go in order, but the modules build on each other roughly in the sequence above — if a lesson feels like it's assuming prior knowledge, the earlier modules are probably where that knowledge lives.

Tracking your progress

Every lesson has a "Mark as complete" checkbox at the bottom. Checking it saves your progress locally in your browser (nothing is sent to a server), and the sidebar will show a checkmark next to any lesson — and a completion count next to any module — that you've finished. It's just for you, so use it however is useful: mark a lesson complete on first read, or save it for after you've reviewed it a second time.

Ready? Start with Scalability in Core Concepts.

Saved locally in your browser — visible in the sidebar as you go.