logo
System design plays a vital role in building scalable, efficient, and reliable software systems. It involves understanding complex architectures, designing for performance and scalability, and implementing robust solutions. Mastering system design is essential for professionals aiming to excel in roles such as system architects, software engineers, and technical leads.
GeeksforGeeks' System Design Course is meticulously designed to prepare students for interviews related to system design. With a focus on industry-relevant concepts and real-world case studies, this course equips students with the knowledge and skills necessary to crack challenging interviews.

Content

01 Basics of Low Level Design
  • Introduction to Object-Oriented Programming
    • Class & Objects, Encapsulation, Inheritance, Abstraction, Polymorphism
    • Operator overloading, Association, Aggregation, and Composition
    • Class diagram as a Visual Tool
    • Procedural vs OO Programming
02 Understanding Constructors
  • Default and Parameterized Constructor
  • Copy Constructor
  • this Keyword and Operations
03 What are UML Diagrams & Types
  • Introduction to UML & Object Diagram
  • Activity Diagram, Sequence Diagram
  • State Diagram
04 Learning Core Design Principle
  • SOLID & GRASP
  • DRY & KISS
05 Advance LLD & Use Cases
  • What are SOLID principles?
    • Single Responsibility & Open/Closed Principle
    • Liskov Substitution & Interface Segregation Principle
    • Dependency Inversion
06 Understanding various Design Patterns
  • Strategy Pattern
  • Observer Pattern
  • Factory Pattern
  • Abstract Factory Pattern
  • Singleton Pattern
  • Command Pattern
  • Proxy Pattern
  • Bridge Pattern
  • Template method Pattern
  • Composite Pattern
  • Iterator Pattern
07 Case Studies & Contests
  • Movie Ticket Booking System
  • Airline Booking System
  • More Case Studies will be covered in Live Class
08 High Level Design - Basics
  • Introduction to System Design
  • System Design Basics
  • Zero to Infinity Intro
  • Client Server Architecture
09 System Design Components - Domain Name System
  • Introduction to DNS
  • Request Routing
  • DNS Cache
  • DNS in Action: Route53
10 System Design Components - Load Balancer
  • Introduction and Types of Load Balancers
  • Scaling Load Balancers
  • Load Balancing Algorithms
11 System Design Components - Scaling
  • Introduction to Scaling
  • Types of Scaling
12 Exploring Database Architecture
  • Use of Databases
    • High level introduction to databases
    • Relational Databases
    • Non Relational Databases
    • Comparing Relational and Non Relational Databases
13 Database Replication
  • Introduction to Database Replication
  • Types of Replication
  • Multi Leader Replication Topology
  • Leaderless Replication Topology
14 Database Sharding
  • Introduction - Database Sharding
  • Sharding Strategies
  • Rebalancing
  • Consistent Hashing
  • Production Implementations
15 Database Indexing
  • Introduction and Types of Indexes
  • Advantages
  • B+ Tree
  • Internal working of B tree
  • Explain Plan
16 Advance High Level Design
  • Queueing Systems
    • Introduction to Queueing Systems
    • Issues and Types of Message Brokers
    • Message Brokers in Action: SQS + SNS
17 Caching
  • Introduction- Caching
  • Cache types
  • Cache Invalidation
  • Cache Eviction Policy
18 System Design Framework
  • System Design Framework
  • Framework and Requirement Gathering
  • High Level Design
  • Back of the envelope estimates
  • Detail Design and Wrap Up
19 Design Problems
  • Design a Rate Limiter
  • Designing Object Store
  • Designing twitter
  • Design a tiny URL generator
  • More Design Problems will be covered in the Live Session