Course Summary
This course teaches the fundamentals of design patterns, a widely used software engineering concept that helps to solve common problems in programming. Students will learn how to implement and apply design patterns to real-world scenarios.Key Learning Points
- Learn how to recognize and apply design patterns in software development
- Understand the benefits and drawbacks of using design patterns
- Gain experience implementing design patterns in practical projects
Related Topics for further study
Learning Outcomes
- Understand the principles and benefits of design patterns
- Be able to recognize and implement common design patterns
- Gain practical experience applying design patterns to real-world scenarios
Prerequisites or good to have knowledge before taking this course
- Basic programming knowledge in a language like Java, C++, or Python
- Familiarity with object-oriented programming concepts
Course Difficulty Level
IntermediateCourse Format
- Self-paced online course
- Video lectures and coding exercises
Similar Courses
- Advanced Object-Oriented Programming
- Software Architecture
Related Education Paths
Notable People in This Field
- Martin Fowler
- Robert C. Martin
Related Books
Description
This course extends object-oriented analysis and design by incorporating design patterns to create interactive applications. Through a survey of established design patterns, you will gain a foundation for more complex software applications. Finally, you will identify problematic software designs by referencing a catalog of code smells.
Outline
- Introduction to Design Patterns: Creational & Structural Patterns
- 2.1.1 – What is a Design Pattern?
- 2.1.2 – Creational, Structural, and Behavioural Patterns
- 2.1.3 – Singleton Pattern
- 2.1.4 – Factory Method Pattern
- 2.1.5 – Facade Pattern
- 2.1.6 – Adapter Pattern
- 2.1.7 – Composite Pattern
- 2.1.8 – Proxy Pattern
- 2.1.9 – Decorator Pattern
- Meet Your Presenter – Sam Jeffery
- Meet Your Facilitator– Cecilia Xiang
- Discussion: Introduce Yourself
- Discussion: Design Pattern Examples
- Design Patterns Course Notes
- Design Patterns Glossary
- Ungraded Assignment - Adapter Pattern (Solution)
- Ungraded Assignment - Composite Pattern (Solution)
- Module 1 Review
- Behavioural Design Patterns
- 2.2.1 – Template Method Pattern
- 2.2.2 – Chain of Responsibility Pattern
- 2.2.3 – State Pattern
- 2.2.4 – Command Pattern
- 2.2.5 – Observer Pattern
- Discussion: Undo/Redo As a Pattern
- Mediator Pattern
- Peer Review Request Forum
- Capstone Assignment 2.1 - Implement the Command Pattern (Solution)
- Ungraded Assignment - Observer Pattern (Solution)
- Module 2 Review
- Working with Design Patterns & Anti-patterns
- 2.3.1 – MVC Pattern
- 2.3.2 – Open/Closed Principle
- 2.3.3 – Dependency Inversion Principle
- 2.3.4 – Composing Objects Principle
- 2.3.5 – Interface Segregation Principle
- 2.3.6 – Principle of Least Knowledge
- 2.3.7 – Part 1 - Code Smells
- 2.3.7 – Part 2 - Code Smells
- Ungraded Assignment - MVC Pattern (Solution)
- Capstone Assignment 2.2 - Implement MVC Pattern (Solution)
- Liskov Substitution Principle
- Discussion: Stories of Bad Coding
- Module 3 Review
- Capstone Challenge
- Capstone Assignment 2.3 - Identify and Fix Code Smells (Solution)
- Discussion: Last Word – Design Patterns
- Acknowledgements
- Credits
- Final Exam
Summary of User Reviews
The Design Patterns course on Coursera has received high praise from users. Many have found it to be a valuable resource for learning about design patterns and software engineering. One key aspect that users have appreciated is the clear and concise explanations provided by the instructor.Pros from User Reviews
- Clear and concise explanations
- Thorough coverage of design patterns
- Engaging assignments and projects
- Helpful feedback from instructors
Cons from User Reviews
- Some users found the course to be too basic
- Several users reported technical difficulties with the platform
- A few users felt that the course was not worth the price
- Some users found the pace of the course to be too slow
- A few users felt that the course could benefit from more real-world examples