Software Design and Architecture

Think like an expert architect and create quality software using design patterns and principles


Software Design & Architecture is four-course specialization on Coursera™ offered by the Department of Computing Science at the University of Alberta.

In this specialization, you will learn how to apply design principles, patterns, and architectures to create reusable, flexible, and maintainable software applications and systems, as well as the expression and documentation of software systems using a visual notation. Practical examples and opportunities to apply your knowledge will help you develop employable skills and relevant expertise in the software industry.

Over the span of the four courses, this application will evolve from a single user app that stores data locally to a multi-user app that stores data remotely. In each course, you will be given a Java code base as a starting point and will have to document or implement new features or some combination of both.