1.
System Design Interviews
5 Lessons
Explore what System Design interviews involve, including essential preparation strategies, fundamental concepts, key resources, and tips to perform well.
Get familiar with System Design and the course structure, including prerequisites that set the foundation for mastering System Design interviews.
Grasp the fundamentals of abstractions in distributed systems, focusing on network abstraction, consistency, and failure models crucial for System Design.
4.
Non-functional System Characteristics
6 Lessons
Take a look at the key non-functional characteristics like availability, reliability, scalability, and fault tolerance in System Design.
5.
Back-of-the-envelope Calculations
2 Lessons
Learn how to estimate resource needs like servers, storage, and bandwidth using back-of-the-envelope calculations for System Design.
Explore the essential building blocks required for modern System Design, which will form the foundation for scalable systems later in the course.
Introduction to Building Blocks for Modern System Design7.
Domain Name System
2 Lessons
Discover how DNS works and its role in System Design, including detailed insights into its design and functionality.
Introduction to Domain Name System (DNS)How the Domain Name System WorksTake a closer look at load balancers, their placement, and algorithms, including local and global load balancers and different tiers of load balancers.
Introduction to Load BalancersGlobal and Local Load BalancingAdvanced Details of Load BalancersExplore databases and their types, data replication, partitioning, and trade-offs essential for designing distributed systems.
Introduction to DatabasesTypes of DatabasesData ReplicationData PartitioningTrade-offs in DatabasesLearn how to design a scalable key-value store, focusing on replication, versioning, and fault tolerance.
System Design: The Key-value StoreDesign of a Key-value StoreEnsure Scalability and ReplicationVersioning Data and Achieving ConfigurabilityEnable Fault Tolerance and Failure Detection11.
Content Delivery Network (CDN)
7 Lessons
Discover CDN design, content caching strategies, consistency, and techniques for efficient content delivery.
System Design: The Content Delivery Network (CDN)Introduction to a CDNDesign of a CDNIn-depth Investigation of CDN: Part 1In-depth Investigation of CDN: Part 2Evaluation of CDN's DesignQuiz on CDN's DesignLearn how to design a sequencer for generating unique IDs, focusing on causality and consistency in distributed systems.
System Design: SequencerDesign of a Unique ID GeneratorUnique IDs with Causality13.
Distributed Monitoring
3 Lessons
Explore a distributed monitoring system’s basics, types, and metrics for effective monitoring.
System Design: Distributed MonitoringIntroduction to Distributed MonitoringPrerequisites of a Monitoring System14.
Monitor Server-side Errors
3 Lessons
Learn how to design a monitoring system and visualize it for tracking server-side errors in real-time.
Design of a Monitoring SystemDetailed Design of a Monitoring SystemVisualize Data in a Monitoring System15.
Monitor Client-side Errors
2 Lessons
Discover how to design a system to monitor client-side errors, ensuring robust and reliable applications.
Focus on Client-side Errors in a Monitoring SystemDesign of a Client-side Monitoring System16.
Distributed Cache
6 Lessons
Unpack the design of a distributed cache, focusing on high-level and detailed designs and evaluating its performance.
System Design: The Distributed CacheBackground of Distributed CacheHigh-level Design of a Distributed CacheDetailed Design of a Distributed CacheEvaluation of a Distributed Cache's DesignMemcached versus Redis17.
Distributed Messaging Queue
7 Lessons
Examine the design of a distributed messaging queue, addressing requirements, design considerations, and performance evaluations.
System Design: The Distributed Messaging QueueRequirements of a Distributed Messaging Queue’s DesignConsiderations of a Distributed Messaging Queue’s DesignDesign of a Distributed Messaging Queue: Part 1Design of a Distributed Messaging Queue: Part 2Evaluation of a Distributed Messaging Queue’s DesignQuiz on the Distributed Messaging Queue’s DesignLearn the design of a pub-sub system, focusing on how to implement and optimize this communication pattern in distributed systems.
System Design: The Pub-sub AbstractionIntroduction to Pub-subDesign of a Pub-sub SystemExplore the design of a rate limiter, covering essential algorithms and considerations for managing traffic and ensuring system stability.
System Design: The Rate LimiterRequirements of a Rate Limiter’s DesignDesign of a Rate LimiterRate Limiter AlgorithmsQuiz on the Rate Limiter’s DesignLearn how to design a blob store, focusing on scalability, storage, and performance evaluation.
System Design: A Blob StoreRequirements of a Blob Store's DesignDesign of a Blob StoreDesign Considerations of a Blob StoreEvaluation of a Blob Store's DesignQuiz on the Blob Store's Design21.
Distributed Search
6 Lessons
Step through distributed search design in stages, with a special focus on indexing, scaling, and replication.
System Design: The Distributed SearchRequirements of a Distributed Search System's DesignIndexing in a Distributed SearchDesign of a Distributed SearchScaling Search and IndexingEvaluation of a Distributed Search's Design22.
Distributed Logging
3 Lessons
Understand the importance and design of a distributed logging service, emphasizing capturing and analyzing logs across distributed systems.
System Design: Distributed LoggingIntroduction to Distributed LoggingDesign of a Distributed Logging Service23.
Distributed Task Scheduler
5 Lessons
Examine the design of a task scheduler addressing issues like prioritizing, task idempotency, queuing, and resource capacity optimization.
System Design: The Distributed Task SchedulerRequirements of a Distributed Task Scheduler's DesignDesign of a Distributed Task SchedulerDesign Considerations of a Distributed Task SchedulerEvaluation of a Distributed Task Scheduler's Design24.
Sharded Counters
4 Lessons
Get familiar with sharded counters and their importance, starting from high-level design and then pivoting to detailed System Design.
System Design: The Sharded CountersHigh-level Design of Sharded CountersDetailed Design of Sharded CountersQuiz on the Sharded Counters' Design25.
Concluding the Building Blocks Discussion
4 Lessons
Wrap up the discussion on building blocks, evaluate your understanding using AI, and learn the RESHADED approach to tackle unseen System Design problems.
AI Evaluation of Building Blocks in E-Commerce PlatformAI Evaluation of Building Blocks in Online Education SystemWrapping Up the Building Blocks DiscussionThe RESHADED Approach for System DesignLearn YouTube System Design, starting with requirements, high-level and detailed design, evaluation of the design, and handling real-world complexities.
System Design: YouTubeRequirements of YouTube's DesignDesign of YouTubeEvaluation of YouTube's DesignThe Reality Is More ComplicatedQuiz on Netflix's DesignExplore the System Design of Quora incrementally by starting with key requirements and challenges in building a scalable Q&A platform.
System Design: QuoraRequirements of Quora's DesignInitial Design of QuoraFinal Design of QuoraEvaluation of Quora’s Design28.
Design Google Maps
6 Lessons
Walk through the System Design of Google Maps, focusing on API design, scalability, finding optimal routes, and ETA computation.
System Design: Google MapsRequirements of Google Maps' DesignDesign of Google MapsChallenges of Google Maps' DesignDetailed Design of Google MapsEvaluation of Google Maps' Design29.
Design a Proximity Service / Yelp
5 Lessons
Take a closer look at the System Design of a proximity service like Yelp, addressing requirements like searching, scaling, and dynamic segments.
System Design: YelpRequirements of Yelp’s DesignDesign of YelpDesign Considerations of YelpQuiz on Yelp's DesignUnderstand how to design Uber, address requirements for ride-sharing platforms, detailed design, and fraud detection.
System Design: UberRequirements of Uber’s DesignHigh-level Design of UberDetailed Design of UberPayment Service and Fraud Detection in Uber DesignEvaluation of Uber’s DesignQuiz on Uber's DesignLearn Twitter System Design, covering aspects like user interaction, API design, caching, storage, and client-side load balancing.
System Design: TwitterRequirements of Twitter’s DesignHigh-level Design of TwitterDetailed Design of TwitterClient-side Load Balancer for TwitterQuiz on Twitter's Design32.
Design Newsfeed System
4 Lessons
Master newsfeed System Design, covering aspects like functional and non-functional requirements, storage schemas, newsfeed generation, and publishing.
System Design: Newsfeed SystemRequirements of a Newsfeed System’s DesignDesign of a Newsfeed SystemEvaluation of a Newsfeed System’s Design33.
Design Instagram
5 Lessons
Explore Instagram’s System Design, covering API design, storage schema, and timeline generation using pull, push, and hybrid approaches.
System Design: InstagramRequirements of Instagram’s DesignDesign of InstagramDetailed Design of InstagramQuiz on Instagram’s Design34.
Design a URL Shortening Service / TinyURL
6 Lessons
Decode the System Design of a URL shortening service like TinyURL, emphasizing requirements like encoding, scalability, and high readability.
System Design: TinyURLRequirements of TinyURL's DesignDesign and Deployment of TinyURLEncoder for TinyURLEvaluation of TinyURL's DesignQuiz on TinyURL's Design35.
Design a Web Crawler
5 Lessons
Explore the System Design of a web crawler, including its key components, such as a crawler, scheduler, HTML fetcher, storage, and crawling traps handler.
System Design: Web CrawlerRequirements of a Web Crawler's DesignDesign of a Web CrawlerDesign Improvements of a Web CrawlerEvaluation of Web Crawler's DesignTake a look at WhatsApp System Design with an emphasis on its API design, high security, and low latency of client-server messages.
System Design: WhatsAppRequirements of WhatsApp’s DesignHigh-level Design of WhatsAppDetailed Design of WhatsAppEvaluation of WhatsApp’s DesignQuiz on WhatsApp’s Design37.
Design Typeahead Suggestion
7 Lessons
Discover the typeahead suggestion System Design, covering aspects like efficient data structures and assemblers for updating suggestions.
System Design: The Typeahead Suggestion SystemRequirements of the Typeahead Suggestion System’s DesignHigh-level Design of the Typeahead Suggestion SystemData Structure for Storing PrefixesDetailed Design of the Typeahead Suggestion SystemEvaluation of the Typeahead Suggestion System’s DesignQuiz on the Typeahead Suggestion System’s Design38.
Design a Collaborative Document Editing Service / Google Docs
5 Lessons
Understand the System Design of Google Docs, using different techniques to address storage, collaborative editing, and concurrency issues.
System Design: Google DocsRequirements of Google Docs’ DesignDesign of Google DocsConcurrency in Collaborative EditingEvaluation of Google Docs’ Design39.
Spectacular Failures
4 Lessons
Learn how to avoid failures and outages by discussing case studies of real-world, large-scale distributed systems like Facebook, AWS, etc.
Introduction to Distributed System FailuresFacebook, WhatsApp, Instagram, Oculus OutageAWS Kinesis Outage Affecting Many OrganizationsAWS Wide Spread Outage40.
Concluding Remarks
1 Lesson
Reflect on key takeaways, highlight unique aspects of each Design Problem, and get pointers on the next steps to master System Design.
Conclusions