Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Online Course

Design Patterns

University of Alberta via Coursera


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.


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.

Taught by

Kenny Wong

Related Courses


4.4 rating, based on 15 reviews

Start your review of Design Patterns

  • Mattneri completed this course, spending 2 hours a week on it and found the course difficulty to be easy.

    Content is ok for a beginner. Usually it just scratch the surface and doesn't go in great detail.
    Exercises quality is quite poor. Many errors in the UML diagrams and code examples.
  • Anonymous

    Anonymous completed this course.

    This is an excellent course for the individuals who are seeking to advance career in programming because design patterns are the flavor of programming and the code smells if it does not have patterns implemented.
    So I would recommend everyone to take this course.
  • Profile image for Stefan Karschti
    Stefan Karschti

    Stefan Karschti completed this course.

    It's a very good course to take if you're specializing in software architecture or just formalizing your specialization. The course details the most used design patterns then follows up with assignments and quizzes. I am very satisfied having taken this course.
  • Anonymous

    Anonymous completed this course.

    Design pattern is really useful for any developer in the world .it facilitate problem's design and make avoid some code smells to be the code flexible reusable and maintainable.
  • Anonymous

    Anonymous completed this course.

    The course combines an appreciation of the formal aspects of structuring and conducting design reviews with an exploration of the ‘softer’ skills required to ensure that reviews engage all those who need to take part and prepare them to carry out their role in a way that delivers the best possible outcomes - designs for products that better meet customer requirements and are easier and cheaper to manufacture.
  • Anonymous

    Anonymous completed this course.

    Good course even if you know the basic design patterns.
    My only wish is that the course could have covered all the design patterns in the GOF pattern list which are used in day to day softwares (eg Builder pattern)
    Also I think one should not enforce knowledge of android for design pattern.
  • Profile image for Cassiano Reinert Novais Dos Santos
    Cassiano Reinert Novais Dos Santos

    Cassiano Reinert Novais Dos Santos completed this course.

    Great course to a general view of Design Patterns. I could get really a good understanding.

    The instructor are very direct and concise with great examples to make us understand.

    I recommend it for anyone searching for an online course in Design Patterns and Software Architecture.

    Thank you!
  • Anonymous
    Very good course, well balanced between theory and practice.

    I recommend it if you want to understand how to structure SW applications.

    This is my second course in the Coursera SW Design and Architecture specialization, and after having completed it, I decided to continue with the next one.
  • Anonymous

    Anonymous completed this course.

    I really enjoyed this course. While I have been familiar with design patterns for several years, and actively use them in my work, this course helped me solidify my understanding, and provided new perspectives on these ideas. Very useful.
  • Anonymous

    Anonymous completed this course.

    Not all the essential design patterns and refactoring techniques have been discussed, but it's still really good. I also liked the way the assignments were structured.
  • Anonymous

    Anonymous completed this course.

    I like this course and specialization. I have learned so much. It’s useful for apply in my job. I recommend this course and all of the course of this specialization.
  • Profile image for Md. Golam Hossain
    Md. Golam Hossain

    Md. Golam Hossain completed this course, spending 3 hours a week on it and found the course difficulty to be medium.

    Nice and precise coursemap to rewind design patterns learning gathered in university. More exercise could be added though. Loved the course nevertheless.
  • Anonymous

    Anonymous completed this course.

    Must have for software developers. A very informative and well designed course. You'll get thorough understanding of various design patterns.
  • Anonymous

    Anonymous completed this course.

    It was good. Assignments could have been harder and more engaging. Instead they felt like trivial find and replace tasks.
  • Anonymous

    Anonymous completed this course.

    I actually liked it. It was quite simple to understand all patterns studied during this course. I would definitely recommend it

Class Central

Get personalized course recommendations, track subjects and courses with reminders, and more.

Sign up for free

Never stop learning Never Stop Learning!

Get personalized course recommendations, track subjects and courses with reminders, and more.

Sign up for free