We may earn an affiliate commission when you visit our partners.
Prateek Narang Sr. Software Engineer Google

Are you looking to take your Java programming skills to the next level and master the art of designing scalable, maintainable, and efficient software systems? In this course, Low Level System Design, Design Patterns & SOLID Principles, Prateek Narang, an experienced Software Engineer and Instructor and having worked with companies like Google, Scaler, Coding Minutes etc will guide you through the world of object-oriented design patterns, essential for building robust applications in real-world scenarios.

What You’ll Learn:

Read more

Are you looking to take your Java programming skills to the next level and master the art of designing scalable, maintainable, and efficient software systems? In this course, Low Level System Design, Design Patterns & SOLID Principles, Prateek Narang, an experienced Software Engineer and Instructor and having worked with companies like Google, Scaler, Coding Minutes etc will guide you through the world of object-oriented design patterns, essential for building robust applications in real-world scenarios.

What You’ll Learn:

  • Understand the fundamental design patterns used in software engineering and how to apply them effectively in Java.

  • Explore creational, structural, and behavioral patterns, and their practical use cases.

  • Write cleaner, more efficient code by leveraging well-established design principles.

  • Learn how to improve low-level design for building scalable and maintainable applications.

  • Solve complex design problems with ease using proven design techniques.

Benefits of Doing a Design Patterns Course

  1. Improved Software Design Skills:

    • Learn how to build flexible, maintainable, and scalable software systems by applying proven design solutions.

    • Design Patterns are tried-and-tested solutions that help you handle recurring problems in software design.

  2. Enhances Problem-Solving:

    • Acquire a deeper understanding of common software design challenges and how to solve them using structured approaches.

    • Patterns provide frameworks for thinking about structural, creational, and behavioral issues in software.

  3. Better Code Readability and Maintenance:

    • Patterns lead to code that is more understandable and self-explanatory.

    • By following widely known design patterns, your codebase becomes easier for other developers to read and maintain.

  4. Code Reusability:

    • Design patterns encourage reusability, which reduces redundancy and makes your codebase more efficient and concise.

    • Patterns like Factory, Prototype, and Singleton encourage the creation of reusable objects and solutions.

  5. Align with Industry Best Practices:

    • Design patterns are a fundamental part of object-oriented design and are widely adopted by the industry. Mastering them shows you’re following industry standards.

    • In interviews and workplace challenges, design patterns often serve as best practices when architecting solutions.

  6. Better Team Collaboration:

    • Design patterns provide a shared vocabulary for discussing design problems and solutions with other developers.

    • This common language improves collaboration within teams and makes communication more effective.

  7. Preparation for System Design Interviews:

    • Many technical interviews for mid-to-senior roles focus on system design questions where knowledge of design patterns is essential.

    • Mastering the foundational concepts of design patterns is crucial for successfully handling these interviews and presenting scalable, optimized solutions.

  8. Handle Complex Systems:

    • Gain the ability to break down complex systems into smaller, manageable pieces using patterns like Composite, Facade, and Bridge.

    • Structural patterns allow you to design systems that are easier to extend and maintain.

  9. Build Scalable and Extensible Architectures:

    • By using design patterns, you can create systems that can scale with increasing complexity and adapt to changing requirements.

    • Patterns like Decorator and Strategy support adding functionality or swapping algorithms without modifying existing code.

  10. Improved Decision-Making:

    • By understanding the pros and cons of each design pattern, you'll be better equipped to make decisions about which approach suits a specific situation.

    • It enables you to evaluate different design options and pick the most optimal solution.

  11. Framework and Library Understanding:

    • Modern frameworks and libraries heavily rely on design patterns (e.g., Singleton in Spring Framework, Factory in GUI toolkits).

    • A strong grasp of design patterns helps you better understand how these frameworks work under the hood.

  12. Career Growth and Opportunities:

    • Mastery of design patterns is often expected for senior-level roles (e.g., architect, tech lead), improving your chances for career advancement.

    • It increases your confidence to tackle complex design problems and lead teams in making architectural decisions.

Design patterns are the foundation of good software design. They help you solve recurring problems and improve the structure and quality of your code. This course offers hands-on examples and real-world scenarios to help you understand and implement these patterns effectively.

Whether you’re preparing for technical interviews or aiming to write better software, this course will give you the practical skills and confidence you need to level up your design capabilities.

Enroll now

What's inside

Learning objectives

  • Understand core design patterns: learn the most widely-used design patterns in java, including creational, structural, and behavioral patterns
  • Apply solid principles: master the solid design principles to write cleaner, more maintainable, and scalable code in your software projects
  • Improve low-level design: gain the ability to design efficient, flexible, and robust object-oriented systems through low-level design practices.
  • Build scalable applications: learn how to use design patterns to create scalable and extensible java applications that can adapt to changing requirements

Syllabus

Object Oriented Programming Recap
Introduction
Course Logistics
Github Repository
Read more
PDF Notes
OOPS - Classes, Objects, Interfaces, Inheritance & Polymorphism
Small Note on Access Modifers
Unified Modelling Language (UML)
Object Oriented Programming Quiz
SOLID Principles
Single Responsibility Principle (SRP)
Open Close Principle (OCP)
Liskov Substiution Principle (LSP)
Interface Segregation Principle (ISP)
Dependency Inversion Principle (DIP)
SOLID Quiz
Part-I Behavioural Design Patterns
Introduction to Design Patterns
Introduction to Behavioural Design Patterns
Memento Pattern
Undo/Redo Problem Statement
Solution using Memento Pattern
Memento Pattern Summary
Graphic Editor Application Exercise
Memento Pattern Quiz
Observer Pattern
Problem - Publisher Subscriber Model
Solution - Observer Pattern
Implementation - Observer Pattern
Observer Pattern Benefits & Use Cases
Stock Price Monitoring System Application Exercise
Observer Pattern Quiz
Strategy Pattern
Strategy Pattern - Problem Statement
Strategy Pattern - Solution
FlexiText Formatter Application Exercise
Strategy Pattern Quiz
Command Pattern
Command Pattern - Problem Statement
Command Pattern - Solution
Command Pattern - Benefits & Use Case
Remote Control System Application Exercise
Command Pattern Quiz
Template Method Pattern
Template Method Pattern - Problem Statement
Template Method Pattern - Solution
Report Generator Application Exercise
Template Method Pattern Quiz
Iterator Pattern
Iterator Pattern - Problem Statement
Iterator Pattern - Solution
Iterator Pattern - Benefits & Java Iterables
Notification Management System Application Exercise
Iterator Pattern Quiz
State Pattern
State Pattern - Problem
State Pattern - Implementation & Benefits
Media Player Application Exercise
State Pattern Quiz
Mediator Pattern
Mediator Pattern - Problem Statement
Mediator Pattern - Implementation
Mediator Pattern - Benefits & Use Cases
Flight Control System Application Exercise
Mediator Pattern Exercise
Part-II Creational Design Patterns
Introduction to Creational Patterns
Singleton Pattern
Singleton Pattern - Problem Statement
Singleton Pattern - Solution
Logger Application Exercise
Singleton Pattern Quiz
Builder Design Pattern
Builder Design Pattern - Problem Statement
Builder Design Pattern - Solution
Meal Builder Application Exercise
Builder Design Pattern Quiz
Factory Design Pattern
Factory Pattern - Problem
Factory Pattern - Solution
Document Creation Application Exercise
Factory Design Pattern Quiz
Abstract Factory Pattern
Abstract Factory Pattern - Problem
Abstract Factory Pattern - Code
Abstract Factory Pattern Quiz
Prototype Pattern
Prototype Pattern Problem
Prototype Pattern Solution
Video Game Application Exercise
Prototype Pattern Quiz
Part-III Structural Design Patterns
Structural Design Patterns
Adapter Pattern
Adapter Pattern - Problem
Adapter Pattern - Solution
Weather Service Application Exercise
Adapter Pattern Quiz

Save this course

Save Low Level System Design, Design Patterns & SOLID Principles to your list so you can find it easily later:
Save

Activities

Coming soon We're preparing activities for Low Level System Design, Design Patterns & SOLID Principles. These are activities you can do either before, during, or after a course.

Career center

Learners who complete Low Level System Design, Design Patterns & SOLID Principles will develop knowledge and skills that may be useful to these careers:

Reading list

We haven't picked any books for this reading list yet.
Comprehensive guide to design patterns in modern C++. It covers a wide range of patterns, and it includes plenty of examples and case studies. It good choice for C++ developers who want to learn about design patterns.
Classic guide to domain-driven design. It covers a wide range of topics, including design patterns, refactoring, and testing. It good choice for any software developer who wants to improve their skills in domain-driven design.
Comprehensive guide to parallel programming. It covers a wide range of topics, including design patterns, refactoring, and testing. It good choice for any software developer who wants to improve their skills in parallel programming.
Provides a comprehensive overview of design patterns in Python. It covers a wide range of patterns, and it includes plenty of examples and case studies. It good choice for Python developers who want to learn about design patterns.
Provided a comprehensive overview of design patterns for object-oriented software development. It covers a wide range of patterns, and it includes plenty of examples and case studies. It's a really good overview for beginners although it has some years now and the field has evolved a lot.
Classic guide to enterprise application architecture. It covers a wide range of topics, including design patterns, refactoring, and testing. It good choice for any software developer who wants to improve their skills in enterprise application development.
Classic guide to test-driven development. It covers a wide range of topics, including design patterns, refactoring, and testing. It good choice for any software developer who wants to improve their skills in test-driven development.
Comprehensive guide to agile software development in C#. It covers a wide range of topics, including design patterns, refactoring, and testing. It good choice for any C# developer who wants to improve their skills in agile development.
More accessible introduction to design patterns than the Gang of Four book. It uses a light-hearted and humorous approach to explain the concepts, and it includes plenty of diagrams and examples. It good choice for beginners who want to learn about design patterns.
Provides a practical guide to designing embedded systems using PIC microcontrollers, covering topics such as hardware architecture, programming, and interfacing.
Provides a concise and accessible overview of operating systems, covering topics such as process management, memory management, and file systems.
Provides a practical guide to domain-driven design, a software design approach that focuses on modeling the domain of the problem rather than the implementation.
Provides a deep dive into the architecture and design of microservices, covering topics such as service discovery, load balancing, and fault tolerance.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser