The Week-by-Week Syllabus
This path is structured into six weeks, each focusing on an essential aspect of system design, combining theory with hands-on projects.
Week 1: Fundamentals of System Design
What to learn: Understanding system requirements, scalability, reliability, and availability. Familiarize yourself with REST and GraphQL principles.
Why this comes before the next step: A solid grasp of the fundamentals provides the foundation for evaluating more complex designs.
Mini-project/Exercise: Create a microservice that implements a basic REST API for a book library.
Week 2: Database Design Principles
What to learn: SQL vs. NoSQL databases, normalization, indexing, and data consistency. Tools: PostgreSQL, MongoDB.
Why this comes before the next step: A deep understanding of database design is crucial for almost all systems, as data is the backbone.
Mini-project/Exercise: Design a schema for a social media application and implement it using PostgreSQL.
Week 3: High-Level Architecture
What to learn: Microservices vs. monoliths, load balancing, caching strategies using Redis, and message queues with Kafka.
Why this comes before the next step: You need to start thinking in terms of high-level abstractions before diving deeper into specifics.
Mini-project/Exercise: Design the architecture for a ride-sharing application using microservices.
Week 4: Scalability and Performance Optimization
What to learn: Techniques for horizontal vs. vertical scaling, performance metrics, and bottleneck identification.
Why this comes before the next step: Understanding these concepts allows you to build systems that can handle real-world loads effectively.
Mini-project/Exercise: Optimize the ride-sharing application to handle 10x the initial user load.
Week 5: Security and Reliability
What to learn: Concepts of authentication, authorization, and data encryption. Explore tools like OAuth and JWT.
Why this comes before the next step: Security and reliability are paramount in real-world systems; neglecting them can have dire consequences.
Mini-project/Exercise: Enhance your application by implementing secure user authentication and data protection mechanisms.
Week 6: Final Project and Mock Interviews
What to learn: Synthesize all concepts to design a comprehensive system and practice mock interviews.
Why this comes before the next step: Finalizing your learning with a project allows you to apply everything and solidify your understanding.
Mini-project/Exercise: Conduct a mock interview focused on system design, presenting your final project to peers.