Skip to content

skp3214/System-Design

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 

Repository files navigation

System Design

Overview of System Design

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.

Key Objectives

  • 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.

Notes Structure

Low Level Design (LLD)

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

High Level Design (HLD)


Learning Outcomes

  • 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!

About

A repository to learn system design

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published