- Level Professional
- Duration 15 hours
- Course by University of Alberta
-
Offered by
About
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. You will be challenged in the Capstone Project to redesign an existing Java-based Android application to implement a combination of design patterns. You will also critique a given Java codebase for code smells. After completing this course, you will be able to: - Demonstrate how to use design patterns to address user interface design issues. - Identify the most suitable design pattern to address a given application design problem. - Apply design principles (e.g., open-closed, dependency inversion, least knowledge). - Critique code by identifying and refactoring anti-patterns. - Apply the model-view-controller architectural pattern.Modules
What is a Design Pattern?
1
Videos
- 2.1.1 – What is a Design Pattern?
6
Readings
- Meet Your Presenter – Sam Jeffery
- Meet Your Facilitator– Cecilia Xiang
- Discussion: Introduce Yourself
- Discussion: Design Pattern Examples
- Design Patterns Course Notes - Updated July 2021
- Design Patterns Glossary
Gang of Four Pattern Catalog
1
Videos
- 2.1.2 – Creational, Structural, and Behavioural Patterns
Creational Patterns
2
Videos
- 2.1.3 – Singleton Pattern
- 2.1.4 – Factory Method Pattern
Structural Patterns
2
Peer Review
- Ungraded Assignment – Adapter Pattern
- Ungraded Assessment – Composite Pattern
5
Videos
- 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
2
Readings
- Ungraded Assignment - Adapter Pattern (Solution)
- Ungraded Assignment - Composite Pattern (Solution)
Review
1
Assignment
- Module 1 Review
Behavioural Patterns
2
Peer Review
- Capstone Assignment 2.1– Implement the Command Pattern
- Ungraded Assignment – Observer Pattern
5
Videos
- 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
5
Readings
- 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)
Review
1
Assignment
- Module 2 Review
Model-View-Controller Pattern
2
Peer Review
- Ungraded Assignment – MVC Pattern
- Capstone Assignment 2.2 – Implement MVC Pattern
1
Videos
- 2.3.1 – MVC Pattern
2
Readings
- Ungraded Assignment - MVC Pattern (Solution)
- Capstone Assignment 2.2 - Implement MVC Pattern (Solution)
Design Principles Underlying Design Patterns
5
Videos
- 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
1
Readings
- Liskov Substitution Principle
Anti-Patterns & Code Smells
2
Videos
- 2.3.7 – Part 1 - Code Smells
- 2.3.7 – Part 2 - Code Smells
1
Readings
- Discussion: Stories of Bad Coding
Review
1
Assignment
- Module 3 Review
Assignment
1
Peer Review
- Capstone Assignment 2.3 – Identify and Fix Code Smells
1
Readings
- Capstone Assignment 2.3 - Identify and Fix Code Smells (Solution)
Course Review
1
Assignment
- Final Exam
3
Readings
- Discussion: Last Word – Design Patterns
- Acknowledgements
- Credits
Auto Summary
This Coursera course on Design Patterns delves into object-oriented design, enhancing your ability to create interactive applications by using established design patterns. Aimed at IT and Computer Science professionals, it involves a Capstone Project where you'll redesign a Java-based Android app and critique Java codebases. Key skills include user interface design, selecting suitable design patterns, and applying design principles. The course spans 900 hours and offers Starter, Professional, and Paid subscription options.

Kenny Wong