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.
Offered By
About this Course
Learner Career Outcomes
21%
43%
30%
Learner Career Outcomes
21%
43%
30%
Offered by

University of Alberta
UAlberta is considered among the world’s leading public research- and teaching-intensive universities. As one of Canada’s top universities, we’re known for excellence across the humanities, sciences, creative arts, business, engineering and health sciences.
Syllabus - What you will learn from this course
Introduction to Design Patterns: Creational & Structural Patterns
Design patterns help to solve common design issues in object-oriented software. You will learn what they are and how they can be applied. In this module you will learn the creational and structural design patterns. You will continue to learn and practice expressing designs in UML, and code some of these patterns in Java.
Behavioural Design Patterns
You will continue learning useful design patterns and add them to your toolbox. In this module, you will learn the behavioural patterns. This will include communicating them in UML and coding them in Java!
Working with Design Patterns & Anti-patterns
You will learn a design pattern that is very useful for user interfaces: model-view-controller, or MVC. Then you will learn some principles underlying the design patterns, to create software that is flexible, reusable, and maintainable. Finally, you will learn some of the symptoms of bad design, which we call code smells or antipatterns.
Capstone Challenge
In the previous modules, you were introduced to a variety of design patterns, and applied two of these to the example Android code base. Now, in the final module of the course, you will identify and fix specific code smells in this code base. After completing these tasks, you will be ready to complete the final exam.
Reviews
TOP REVIEWS FROM DESIGN PATTERNS
I have never had a chance to study CS at the university so I am always looking for ways to improve my knowledge - to keep up with fellow programmers. And this course met my requirements perfectly. :)
Very rich content. However, i don't think the community reviewing system for assignments is the best, if there is a more controlled reviewing option can be used, i think it will be better.
This course was not easy, especially when you have zero knowledge on subject. But it is very helpful subject and will certainly be a plus for you career in software development.
Quite a good course to understand the fundamental design patterns that we can apply in software design. Liked the amount of student indulgence that is encouraged in the project.
About the Software Design and Architecture Specialization
In the Software Design and Architecture Specialization, you will learn how to apply design principles, patterns, and architectures to create reusable and flexible software applications and systems. You will learn how to express and document the design and architecture of a software system using a visual notation.

Frequently Asked Questions
When will I have access to the lectures and assignments?
What will I get if I subscribe to this Specialization?
Is financial aid available?
Will I earn university credit for completing the Course?
More questions? Visit the Learner Help Center.