System Design is a critical discipline in software engineering that focuses on architecting robust, scalable, and efficient systems to meet real-world requirements. It bridges the gap between high-level concepts and low-level implementations, ensuring that software solutions are both functional and maintainable. This course is divided into Low-Level Design (LLD) and High-Level Design (HLD) to provide a comprehensive understanding of the process.
- LLD: Focuses on the detailed design of individual components, including object-oriented principles, design patterns, and project implementations.
- HLD: Emphasizes the overall system architecture, including scalability, load balancing, data distribution, and integration strategies (to be added later).
- Holistic Approach: Combines theoretical foundations with practical projects to prepare learners for end-to-end system development.
| Lecture | Topic | Description | Link/Resource |
|---|---|---|---|
| Lecture 1 | Introduction to System Design | Introduction to system design principles. | Link |
| Lecture 2 | Oops - Real World Examples | Practical OOP concepts with examples. | Link |
| Lecture 3 | Inheritance and Polymorphism | Deep dive into inheritance and polymorphism. | Link |
| Lecture 4 | Class and Sequence Diagram in UML Diagrams | Learn UML for design visualization. | Link |
| Lecture 5 | SOLID Design Principles - Part 1 | First half of SOLID principles. | Link |
| Lecture 6 | SOLID Design Principles - Part 2 | Completion of SOLID principles. | Link |
| Lecture 7 | Document Editor LLD - Project 1 | Design a text editor system. | Link |
| Lecture 8 | Design Pattern in LLD - Strategy Design Pattern | Encapsulate algorithms for flexibility. | Link |
| Lecture 9 | Design Pattern in LLD - Factory Design Pattern | Simplify object creation. | Link |
| Lecture 10 | Design Pattern in LLD - Singleton Design Pattern | Ensure a single instance. | Link |
| Lecture 11 | Build Zomato Food Delivery App - Project 2 | Create a food delivery app. | GitHub |
| Lecture 12 | Design Pattern in LLD - Observer Design Pattern | Build event-driven systems. | Link |
| Lecture 13 | Design Pattern in LLD - Decorator Design Pattern | Add responsibilities dynamically. | Link |
| Lecture 14 | LLD of Notification System | Design a notification framework. | Link |
| Lecture 15 | Design Pattern in LLD - Command Design Pattern | Enable undo/redo functionality. | Link |
| Lecture 16 | Design Pattern in LLD - Adapter Design Pattern | Bridge incompatible interfaces. | Link |
| Lecture 17 | Design Pattern in LLD - Facade Design Pattern | Simplify complex subsystems. | Link |
| Lecture 18 | Music Player App LLD - Project 2 | Develop a music player. | GitHub |
| Lecture 19 | Design Pattern in LLD - Composite Design Pattern | Uniform treatment of objects. | Link |
| Lecture 20 | Design Pattern in LLD - Template Method Design Pattern | Define algorithm skeletons. | Link |
| Lecture 21 | Design Pattern in LLD - Proxy Design Pattern | Control object access. | Link |
| Lecture 22 | Design Pattern in LLD - Chain of Responsibility Design Pattern | Chain request handlers. | Link |
| Lecture 23 | Payment Gateway LLD | Design a secure payment system. | Link |
| Lecture 24 | Discount Coupon Engine LLD | Build a coupon management system. | Link |
| Lecture 25 | Design Pattern in LLD - Bridge Design Pattern | Decouple abstraction and implementation. | Link |
| Lecture 26 | Zepto Clone - Inventory Management LLD - Project 3 | Model an inventory system. | GitHub |
| Lecture 27 | Tinder Clone - Dating App LLD - Project 4 | Design a dating app matching system. | GitHub |
| Lecture 28 | Design Pattern in LLD - Builder Design Pattern | Construct complex objects step-by-step. | Link |
| Lecture 29 | Design Pattern in LLD - Iterator Design Pattern | Traverse collections efficiently. | Link |
| Lecture 30 | Design Pattern in LLD - Flyweight Design Pattern | Optimize with shared objects. | Link |
| Lecture 31 | SplitWise Clone - Expense Splitting App - LLD - Project 5 | Implement an expense-sharing app. | GitHub |
| Lecture 32 | Design Pattern in LLD - State Design Pattern | Alter behavior by state. | Link |
| Lecture 33 | Tic Tac Toe Game LLD - Project 6 | Build a two-player game. | GitHub |
| Lecture 34 | Snake and Ladder Game LLD - Project 7 | Design a board game. | GitHub |
| Lecture 35 | Design Pattern in LLD - Mediator Design Pattern | Centralize object communication. | Link |
| Lecture 36 | Design Pattern in LLD - Prototype Design Pattern | Clone objects efficiently. | Link |
| Lecture 37 | Chess Game - LLD - Project 8 | Create a chess game system. | GitHub |
| Lecture 38 | Design Pattern in LLD - Visitor Design Pattern | Add operations to object hierarchies. | Link |
| Lecture 39 | Design Pattern in LLD - Memento Design Pattern | Save and restore states. | Link |
| Lecture 40 | Wrapping Up with LLD: Null Object Pattern and Anti-Patterns | Learn safe defaults and avoid pitfalls. | Link |
-
LLD Mastery: Gain expertise in OOPs, UML, 22+ design patterns, and 8 hands-on projects.
-
Best Practices: Apply SOLID principles and avoid anti-patterns.
Note: These notes have been thoughtfully crafted with the assistance of Grok, utilizing code from Aditya's LLD Lecture Code. Should you identify any inaccuracies in definitions or code, we warmly invite you to submit a pull request with corrections. Please explore and learn from this repository at your own discretion, embracing the opportunity to contribute and grow!