Design Patterns (Coursera)

Offered by University of Alberta,
Design Patterns (Coursera)

This course extends object-oriented analysis and design by incorporating design patterns to create interactive applications. Through a survey of established design patterns, learners will gain a foundation for more complex software applications. Finally, learners 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.

Class Deals by MOOC List - Click here and see Coursera's Active Discounts, Deals, and Promo Codes.

Learners will be challenged in the capstone project to critique an existing Java application for code smells. They will redesign the application to combine design patterns such as within the Model-View-Controller (MVC) design.
After completing this course, a learner 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.

Course 2 of 4 in the Software Design and Architecture Specialization

Syllabus

WEEK 1
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.

WEEK 2
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!

WEEK 3
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.

WEEK 4
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.

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

Related Courses

Android App Components - Intents, Activities, and Broadcast Receivers (Coursera) Coursera
Vanderbilt University

Android App Components - Intents, Activities, and Broadcast Receivers (Coursera)

This MOOC builds upon the overview of Java and Android covered in Course 1 by delving deeper into core Android components, such as Activities, Broadcast Receivers, Intents, and Intent Filters. You will learn by example how to program these core Android components together with basic Java file I/O classes (such as File, InputStream, OutputWriter, etc.) and Android storage mechanisms (such as Shared Preferences).

Nov 2nd 2026
4 Weeks
Working with Integrated Development Environments (Coursera) Coursera
University of Leeds

Working with Integrated Development Environments (Coursera)

Integrated Development Environments (IDEs) are vital in increasing developer productivity and learning to work with them will help you create impressive software projects whether you're a beginner or have some programming experience. This course provides the essential skills and knowledge to excel in software development using Integrated Development Environments (IDEs). You'll cover IDE fundamentals, including environment setup, interface navigation, and valuable features like debugging.

Nov 16th 2026
2 Weeks
Continuous Delivery & DevOps (Coursera) Coursera
University of Virginia

Continuous Delivery & DevOps (Coursera)

Amazon famously delivers new code every 11.6 seconds. Just a few years ago, this was unthinkable: many ‘cutting edge’ firms would release software quarterly. When it comes to digital innovation, velocity is critical and many would say it’s the most reliable determinant of success. Bringing an organization to the state of the art (or even functional capability) in this area requires strong work in a combination of disciplines and a combination of both technical and managerial skills. There is no single cookie-cutter approach for achieving this capability.

Nov 2nd 2026
4 Weeks
Python Data Analysis (Coursera) Coursera
Rice University

Python Data Analysis (Coursera)

This course will continue the introduction to Python programming that started with Python Programming Essentials and Python Data Representations. We'll learn about reading, storing, and processing tabular data, which are common tasks. We will also teach you about CSV files and Python's support for reading and writing them. CSV files are a generic, plain text file format that allows you to exchange tabular data between different programs. These concepts and skills will help you to further extend your Python programming knowledge and allow you to process more complex data.

Nov 2nd 2026
4 Weeks
Capstone: Autonomous Runway Detection for IoT (Coursera) Coursera
EIT Digital

Capstone: Autonomous Runway Detection for IoT (Coursera)

The students will develop a larger system using the learning outcomes from these courses, and the students will evaluate the developed system in a real-world programming environment. This course is a true engineering task in which the student must, not only implement the algorithm code, but also handle the interfaces between many different actors and hardware platforms.

Nov 2nd 2026
3 Weeks
SRS Documents: Requirements and Diagrammatic Notations (Coursera) Coursera
University of Colorado System

SRS Documents: Requirements and Diagrammatic Notations (Coursera)

As requirements are being gathered and prioritized, they also need to be documented. In Diagrammatic Notations and Software Requirements Specification Writing, we discuss and practice the process of turning requirements into something readable to the customers at a high level, and the developers. When a designer or developer reads your document, they should be able to understand the overall idea, the scope, the domain, the resources, the expectations, and why alternative choices are not selected. To create a document in this way, you use a balance between storytelling (with pictures!) and complex diagrams.

Nov 2nd 2026
5-12 Weeks
Principles of Computing (Part 2) (Coursera) Coursera
Rice University

Principles of Computing (Part 2) (Coursera)

This two-part course introduces the basic mathematical and programming principles that underlie much of Computer Science. Understanding these principles is crucial to the process of creating efficient and well-structured solutions for computational problems. To get hands-on experience working with these concepts, we will use the Python programming language. The main focus of the class will be weekly mini-projects that build upon the mathematical and programming principles that are taught in the class.

Nov 2nd 2026
4 Weeks
Internet of Things: Setting Up Your DragonBoard™ Development Platform (Coursera) Coursera
University of California, San Diego

Internet of Things: Setting Up Your DragonBoard™ Development Platform (Coursera)

Do you want to develop skills to prototype mobile-enabled products using state-of-the-art technologies? In this course you will build a hardware and software development environment to guide your journey through the Internet of Things specialization courses. We will use the DragonBoard™ 410c single board computer (SBC).

Nov 16th 2026
5-12 Weeks
Creative Programming for Digital Media & Mobile Apps (Coursera) Coursera
University of London,Goldsmiths, University of London

Creative Programming for Digital Media & Mobile Apps (Coursera)

This course is for anyone who would like to apply their technical skills to creative work ranging from video games to art installations to interactive music, and also for artists who would like to use programming in their artistic practice. This course will teach you how to develop and apply programming skills to creative work. This is an important skill within the development of creative mobile applications, digital music and video games. It will teach the technical skills needed to write software that make use of images, audio and graphics, and will concentrate on the application of these skills to creative projects. Additional resources will be provided for students with no programming background.

Nov 9th 2026
5-12 Weeks