The Week-by-Week Syllabus
This syllabus is designed for hands-on learning, simulating real-world projects that will solidify your understanding of system design principles.
Week 1: Understanding the Basics of System Design
What to learn: Concepts such as scalability, availability, and fault tolerance.
Why this comes before the next step: Mastering these foundational principles sets the stage for more complex topics. You need to know what you’re designing for before diving deeper.
Mini-project/Exercise: Create a basic design document for a URL shortening service, outlining key features and scalability requirements.
Week 2: Deep Dive into Design Patterns
What to learn: Explore patterns like Observer, Singleton, and Factory.
Why this comes before the next step: Understanding design patterns helps you recognize reusable solutions to frequent problems in system design.
Mini-project/Exercise: Refactor your URL shortening service to incorporate these design patterns, focusing on how they improve scalability and maintainability.
Week 3: API Design and Communication
What to learn: API design principles, RESTful services, and OpenAPI specifications.
Why this comes before the next step: APIs are often the backbone of systems; mastering them is crucial for effective system design.
Mini-project/Exercise: Develop a REST API for your URL shortening service and document it using OpenAPI.
Week 4: Implementing Microservices
What to learn: Introduction to Docker and Kubernetes for deploying microservices.
Why this comes before the next step: Microservices allow for independent scaling and deployment, which is essential for large systems.
Mini-project/Exercise: Containerize your URL shortening service using Docker and deploy it on a local Kubernetes cluster.
Week 5: System Scalability Techniques
What to learn: Techniques such as load balancing, caching, and database sharding.
Why this comes before the next step: You need to understand how to scale your system once it’s built before considering optimization strategies.
Mini-project/Exercise: Implement a caching layer in your URL shortening service using Redis and analyze the performance improvements.
Week 6: Real-world System Design Simulation
What to learn: Practice common interview questions and conduct mock system design interviews.
Why this comes before the next step: The best way to prepare for an interview is to simulate the experience, so you know what to expect.
Mini-project/Exercise: Pair up with a fellow learner and conduct mock interviews, focusing on specific design problems like building a social media platform.