The Week-by-Week Syllabus
This syllabus is designed to build your system design expertise through a series of hands-on projects and theoretical frameworks that align with real-world scenarios.
Week 1: Understanding Requirements
What to learn: Analyzing functional and non-functional requirements, user stories, and system constraints.
Why this comes before the next step: Grasping requirements is crucial for informed design decisions, setting the foundation for everything that follows.
Mini-project/Exercise: Conduct a requirements gathering session for a fictional ride-sharing service—document user stories and system constraints.
Week 2: Core System Components
What to learn: Key components like load balancers, databases, caching layers (e.g., Redis), and message brokers (e.g., Kafka).
Why this comes before the next step: Understanding these components informs how they interconnect within a system.
Mini-project/Exercise: Map out the core components for your ride-sharing service, showing interactions and data flow.
Week 3: System Interaction Patterns
What to learn: Patterns of interaction like request-response, event-driven architecture, and reactive systems.
Why this comes before the next step: Choosing the right interaction pattern dictates responsiveness and scalability.
Mini-project/Exercise: Design an event-driven architecture for user notifications in your ride-sharing app.
Week 4: Scaling Strategies
What to learn: Horizontal vs. vertical scaling, sharding, and replication mechanisms.
Why this comes before the next step: Knowing how to scale is essential for anticipating system growth and performance.
Mini-project/Exercise: Create a scaling strategy document for your ride-sharing app detailing when to scale and how.
Week 5: Incorporating Reliability
What to learn: Designing for fault tolerance, implementing circuit breakers, and ensuring system resilience.
Why this comes before the next step: Reliability is key in system design, particularly for production-level applications.
Mini-project/Exercise: Implement a circuit breaker pattern in a sample microservice API.
Week 6: Mock Interviews and Feedback
What to learn: Conducting system design interviews using frameworks like LEF and preparing for common questions.
Why this comes before the next step: Practicing interviews with a structured approach solidifies concepts and builds confidence.
Mini-project/Exercise: Participate in mock interviews with peers, focusing on real-time feedback and iterations on your design.