Master the principles and patterns of low-level system design — from OOP fundamentals and SOLID principles to design patterns, schema design, and building real-world components. This roadmap prepares you for LLD interviews and everyday software architecture decisions.
§ SYLLABUS
- 01Classes, Objects & Encapsulation
Understand how to model real-world entities as classes, instantiate objects, and hide internal state behind well-defined interfaces.
- 02Inheritance & Polymorphism
Learn how subclassing and method overriding let you share behavior across types and write code that works against abstractions rather than concrete classes.
- 03Abstract Classes & Interfaces
Understand contracts — when to use an interface to define capability versus an abstract class to share partial implementation.
- 04Composition vs Inheritance
Learn why favoring object composition over class inheritance leads to more flexible, testable designs.
- 05OOP Foundations Complete
You can model domains with classes, interfaces, and composition confidently.
- 01Single Responsibility Principle
Each class should have exactly one reason to change — learn to identify and separate concerns.
- 02Open/Closed Principle
Design modules that are open for extension but closed for modification, using abstraction and polymorphism.
- 03Liskov Substitution Principle
Subtypes must be substitutable for their base types without breaking correctness — learn to spot violations.
- 04Interface Segregation Principle
Prefer many small, focused interfaces over one large general-purpose interface to reduce coupling.
- 05Dependency Inversion Principle
High-level modules should depend on abstractions, not concrete implementations — the foundation of dependency injection.
- 06DRY, KISS & YAGNI
Complementary principles that guard against duplication, over-engineering, and premature generalization.
- 07Law of Demeter
Limit an object's knowledge to its immediate collaborators to reduce coupling between distant parts of the system.
- 08Design Principles Mastered
You can evaluate and refactor code against SOLID and related principles.
- 01Factory Method & Abstract Factory
Delegate object creation to subclasses or factory objects so the client code stays decoupled from concrete types.
- 02Singleton Pattern
Ensure a class has only one instance with a global access point — and understand when this pattern is a code smell.
- 03Builder Pattern
Construct complex objects step-by-step, separating construction logic from representation.
- 04Prototype Pattern
Create new objects by cloning existing ones, useful when construction is expensive or configuration-heavy.
- 01Adapter Pattern
Convert the interface of a class into one the client expects, enabling incompatible classes to work together.
- 02Decorator Pattern
Attach additional behavior to objects dynamically without modifying their class — a flexible alternative to subclassing.
- 03Facade Pattern
Provide a simplified interface to a complex subsystem, reducing the learning curve and coupling for client code.
- 04Composite Pattern
Compose objects into tree structures and treat individual objects and groups uniformly.
- 01Strategy Pattern
Define a family of interchangeable algorithms and let the client choose one at runtime without conditional logic.
- 02Observer Pattern
Establish a one-to-many dependency so that when one object changes state, all dependents are notified automatically.
- 03State Pattern
Let an object alter its behavior when its internal state changes, appearing to change its class.
- 04Command Pattern
Encapsulate a request as an object, enabling undo/redo, queuing, and logging of operations.
- 05Chain of Responsibility
Pass a request along a chain of handlers, where each handler decides to process or forward it.
- 06Iterator Pattern
Provide a way to access elements of a collection sequentially without exposing its underlying representation.
- 07Design Patterns Toolkit Complete
You can recognize, apply, and combine the most important Gang of Four patterns.
- 01UML Class Diagrams
Read and draw class diagrams to communicate designs visually — associations, aggregation, composition, and inheritance arrows.
- 02API & Interface Contract Design
Design clean method signatures, define clear contracts, and version your interfaces for backward compatibility.
- 03Database Schema Design for LLD
Translate class models into relational schemas — normalization, foreign keys, indexes, and mapping inheritance to tables.
- 04Enums, Constants & Type Safety
Use enums and type-safe constructs to eliminate magic strings and invalid states from your design.
- 01Thread Safety & Synchronization
Understand race conditions, mutexes, locks, and synchronized blocks to protect shared mutable state.
- 02Producer-Consumer & Blocking Queues
Coordinate work between threads using bounded buffers and blocking queues — a fundamental concurrency pattern.
- 03Read-Write Locks & Concurrent Collections
Allow multiple readers or a single writer to access shared data efficiently using specialized locks and thread-safe data structures.
- 04Concurrency Basics Complete
You can design thread-safe classes and reason about concurrent access patterns.
- 01Design a Parking Lot
Model vehicles, spots, floors, and ticketing — a classic LLD exercise covering OOP, enums, and strategy selection.
- 02Design an Elevator System
Handle scheduling, state machines, and concurrent requests in a multi-elevator building.
- 03Design an LRU Cache
Combine a hash map and doubly-linked list to build a constant-time eviction cache — tests data structure choice and API design.
- 04Design Snake & Ladders / Tic-Tac-Toe
Model game state, turns, validation, and win conditions — exercises the state and strategy patterns.
- 05Design Splitwise / Expense Sharing
Handle users, groups, expense splitting strategies (equal, exact, percentage), and balance settlement.
- 06Design a Library Management System
Model books, members, borrowing rules, fines, and search — a comprehensive CRUD-plus-business-rules exercise.
- 07Low Level System Design Proficient
You can decompose a problem into classes, apply appropriate patterns, handle concurrency, and produce a clean, extensible design.