Software Design and Architecture

Software Design and Architecture logo

Software Design and Architecture

Learn how to apply design principles, patterns, and architectures to create reusable, flexible, and maintainable software applications and systems.

Register today

Sign up on Coursera now to begin working towards your specialization certificate.

Learn more and register


About the specialization

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

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.

The Software Design and Architecture specialization is a series of courses which build on each other and culminate in a capstone project. Upon successful completion, a certificate from the University of Alberta is awarded. Each of the specialization's courses can also be taken individually.

Software Design and Architecture courses are not eligible for university credit.

What background knowledge is necessary?

Familiarity with object-oriented programming structures is essential. Basic Java programming knowledge is expected. Assignments and quizzes will require coding in Java. The capstone application will require you to use Android Studio, an integrated development environment.

Software Design and Architecture with 4 other boxes:


Specialization Format

Each of the four courses in the Specialization are designed to be completed in 4 weeks; the entire Specialization can be completed in 16 weeks.

On average there is one assignment per week for the first 8 weeks (occasionally a week without an assignment will be followed by a week with two assignments). The last 8 weeks average fewer than one assignment per week.

Depending on capacity to complete assignments, we expect learners to finish any of the courses in 3 - 5 weeks.

Sign up today & develop employable skills and relevant expertise in the software industry

Register now on Coursera

Instructor

Ken Wong, Associate Professor

Department of Computing Science, University of Alberta

Ken Wong is an associate professor in computing science at the University of Alberta.


 

Syllabus

Course 1 - Object-Oriented Design

This course takes Java beginners to the next level by covering object-oriented analysis and design. You will discover how to create modular, flexible, and reusable software, by applying object-oriented design principles and guidelines. And, you will be able to communicate these designs in a visual notation known as Unified Modelling Language (UML).

You will be challenged in the Capstone Project to apply your knowledge of object-oriented design by evolving and documenting the Java codebase for an Android application with corresponding UML documentation.


Course 2 - Design Patterns

This course takes Java beginners to the next level by covering object-oriented analysis and design. You will discover how to create modular, flexible, and reusable software, by applying object-oriented design principles and guidelines. And, you will be able to communicate these designs in a visual notation known as Unified Modelling Language (UML).

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.


Course 3 - Software Architecture

The way that software components — subroutines, classes, functions, etc. — are arranged, and the interactions between them, is called architecture. In this course you will study the ways these architectures are represented, both in UML and other visual tools. We will introduce the most common architectures, their qualities, and tradeoffs. We will talk about how architectures are evaluated, what makes a good architecture, and an architecture can be improved. We'll also talk about how the architecture touches on the process of software development.

In the Capstone Project you will document a Java-based Android application with UML diagrams and analyze evaluate the application’s architecture using the Architecture Tradeoff Analysis Method (ATAM).


Course 4 - Service-Oriented Architecture

Based on an understanding of architectural styles, you will review architectures for web applications, then explore the basics of Service-Oriented Architecture (SOA) in two approaches: Web Services (WS*) and Representational State Transfer (REST) architecture.

In the Capstone Project you will connect a Java-based Android application with Elasticsearch, a web service with a REST application programmer interface (API).

Sign up today & develop employable skills and relevant expertise in the software industry

Register now on Coursera