Approx. 2 months

Assumes 6hrs/wk (work at your own pace)

Built by
Join thousands of students

Start Free Course

Start Free Course
You get
Instructor videos
Learn by doing exercises

Course Summary

Software Architecture and Design teaches the principles and concepts involved in the analysis and design of large software systems. This course is split into four sections: (1) Introduction, (2) UML and Analysis, (3) Software Architecture, and (4) Software Design.

Why Take This Course?

This course will equip students with the skills and knowledge necessary to accomplish the following objectives:

  • Express the analysis and design of an application using UML
  • Specify functional semantics of an application using OCL
  • Specify and evaluate software architectures
  • Select and use appropriate architectural styles
  • Understand and apply object-oriented design techniques
  • Select and use appropriate software design patterns
  • Understand and perform a design review

Prerequisites and Requirements

Students are expected to have completed an undergraduate software engineering course or have industry experience in software development. Additionally all students must follow the policies listed on the Course Wiki.

For other requirements, see Udacity's Technology Requirements.

See the Technology Requirements for using Udacity.


The Course Wiki serves as the syllabus for Software Architecture and Design. But, for a high-level view of the course, we have listed the lessons:

Part 1: Introduction

  • Lesson 1: Introduction
  • Lesson 2: Text Browser Exercise (Analysis)
  • Lesson 3: Design Concepts

Part 2: UML and Analysis

  • Lesson 1: Review of UML
  • Lesson 2: Object Oriented Analysis Exercise
  • Lesson 3: UML Class Models
  • Lesson 4: Design Studies
  • Lesson 5: Library Exericse (UML)
  • Lesson 6: Formal Specification
  • Lesson 7: OCL
  • Lesson 8: Library Exercise (OCL)
  • Lesson 9: Behavior Modeling
  • Lesson 10: Clock Radio Exercise

Part 3: Software Architecture

  • Lesson 1: KWIC Exercise
  • Lesson 2: Overview of Software Architecture
  • Lesson 3: Architectural Views
  • Lesson 4: Text Browser Exercise (Architecture)
  • Lesson 5: Non-Functional Requirements
and Architectural Styles
  • Lesson 6: Connectors
  • Lesson 7: Acme
  • Lesson 8: Refinement
  • Lesson 9: Middleware
  • Lesson 10: Guest Interview: LayerBlox

Part 4: Software Design

  • Lesson 1: Components
  • Lesson 2: Coffee Maker Exercise
  • Lesson 3: Object Design
  • Lesson 4: Design Patterns
  • Lesson 5: Design Principles
  • Lesson 6: Design Reviews
  • Lesson 7: Design Review Exercise

Instructors & Partners

instructor photo

Spencer Rugaber

Dr. Spencer Rugaber is a faculty member in the College of Computing at the Georgia Institute of Technology. His research interests are in the area of Software Engineering, specifically reverse engineering and program comprehension, software evolution and maintenance and software design. Dr. Rugaber has served as Program Director for the Software Engineering and Languages Program at the U. S. National Science Foundation and as as Vice-Chairman of the IEEE Technical Committee on Reverse Engineering.

instructor photo

Eric Feron

Eric Feron has been the Dutton-Ducoffe Professor of Aerospace Software Engineering at the Georgia Institute of Technology since 2005. Prior to that, he was on the faculty of MIT's department of Aeronautics and Astronautics from 1993 until 2005. He holds his BS, MS and PhD degrees from Ecole Polytechnique, France, Ecole Normale Suprieure, France and Stanford University, United States. Eric Feron's interests are to use fundamental concepts of control systems, optimization and computer science to address important problems in aerospace engineering, including: Aerobatic control of unmanned aerial vehicles, multi-agent operations, including air traffic control systems and aerospace software system certification. Eric Feron has published two books and several research papers; his former research students are distributed throughout academia, government and industry. He is an advisor to the Academy of Technologies, France. When he is not in his office, Eric Feron may be found sailing along the coast of Florida.

instructor photo

Jarrod Parkes

Jarrod is no stranger to trying new things for the sake of education: both a self-starter and advocate for reinventing the ways we learn, he first started challenging the status quo when he helped create virtual science labs for middle school students at the HudsonAlpha Institute for Biotechnology. While studying Computer Science at the University of Alabama in Huntsville, he started supplementing his college curriculum with online courseware, and he has never looked back. He holds a BS in Computer Science from the University of Alabama in Huntsville.