Course Structure for Modern System Design

Get an overview of the structure and strengths of this system design course.

Structure of the course#

This course consists of forty chapters. These chapters can be segmented into four different sections given below.

  1. Introduction: The introduction section is composed of five chapters. The first chapter introduces the course and its key features. The second chapter guides on how to prepare for the system design interview. The third chapter talks about different types of abstractions. Next, we discuss some indispensable non-functional characteristics that every large-scale system should have. We wrap this chapter up with back-of-the-envelope calculations that enable us to estimate resources during our design problems.
  2. Building blocks: The “Building Blocks” chapter starts with an introductory lesson presenting sixteen different building blocks. Each of these building blocks is explained in an independent chapter. We conclude this section with the "Conclusion" chapter, which also serves as an introduction to the next section.
  3. Design problems: This section is the meat of the course and is carefully crafted from thirteen design problems.
  4. Epilogue: The “Epilogue” section wraps up this course and is made up of two chapters. The first covers spectacular failures that show how, in the real world, even a small mistake can bring down a large and successful application. Such failures may be inevitable, but we highlight some measures to mitigate such failures. We conclude the course with the concluding remarks chapter.

Note: Although we did our best to keep the chapters independent, our readers will find it useful to read them in the given sequence.

Concluding remarks
Spectacular failures
Design Google Docs
Design Typeahead
Design WhatsApp
Design Web crawler
Design TinyURL
Design Instagram
Design Newsfeed system
Design Twitter
Design Uber
Design Yelp
Design Google Maps
Design Quora
Design YouTube
Concluding building blocks
Sharded counters
Distributed task scheduler
Distributed logging
Distributed search
Blob store
Rate limiter
Pub-sub system
Distributed messaging queue
Distributed cache
Distributed monitoring



Monitoring server-side errors



Monitoring client-side errors
Sequencer
CDN
Key-value store
Databases
Load balancers
DNS
Introduction
Back-of-the-envelope calculations
Non-functional system characteristics
Abstractions
System Design interviews
Introduction
Epilogue
Design Problems
Building Blocks
Introduction
This course
The structure of this course

Strengths of the course#

While filling some important gaps in other available courses, we believe this course has some key strengths to offer. We summarize the strengths and the advantages this course has over others in the table given below.

Strengths

Advantage

Building blocks

This is a modern approach to system design where we construct bigger artifacts using smaller building blocks.

Building blocks as design problems

We’ll treat each one of our building blocks as a stand-alone, mini design problem.

Incremental improvement to design

Layer-by-layer design solution addresses added bottlenecks, designing simple and incremental solutions to complex systems.

Evaluating the design

Accountability of the provided design solution shows the performance of our design.

Solving the traditional problems with updated designs

This course is up to date with the latest industry demands.

New design problems added

This course contains updates to decades-old system design courses.

Careful collection of design problems

Each problem has its unique aspects in terms of problem-solving and designing.

Contributions by experts from FAANG

Learn from the best.

Let's start our system design journey!

Introduction to Modern System Design
What Is a System Design Interview?
Mark as Completed