SWE 621, Spring 2020

Software Design and Architecture

Tuesday, 4:30pm-7:10pm, 2026 Art and Design Building

Grades         Syllabus, Schedule, and Slides         Announcements, Assignments, Discussion

Instructor: Prof. Thomas LaToza TA: Niyati Mallya
Email tlatoza@gmu.edu nmallya@gmu.edu
Office 4431 Engineering Building TBD
Office hours      Anytime electronically, Wed 3:00 - 4:30, or by appointment    TBD

Course Overview

This course will provide a comprehensive introduction to software architecture and design, methods, processes, and notations. This course will explore design as the enumeration, evaluation, and selection of design alternatives to achieve quality attributes, including perspectives on design from risk minimization, domain modeling, abstraction, architectural styles, design patterns, and reuse.

Learning Outcomes
  • Characterize a design space, including identifying risks and key architectural decisions
  • Design abstractions that express a system or domain model
  • Use notations to describe elements and relations in an architecture
  • Reverse engineer design decisions, architectural styles, design patterns, design rules, and programming styles from existing systems
  • Create and evaluate designs for modifability and reuse
Required Textbooks


Lecture titles link to lecture slides.
1. Course Overview, Design as Choice (1/21)
Req Readings: none
2. Design as Risk Minimization (1/28)
Req Readings:
  • Fairbanks, Chapter 1: Introduction
  • Fairbanks, Chapter 3: Risk-Driven Model
  • Fairbanks, Chapter 4: Example: Home Media Player
HWs: HW0 due
3. Design as Domain Modeling (2/4)
Req Readings:
  • Fairbanks, Chapter 5: Modeling Advice
  • Fairbanks, Chapter 6: Engineers use Models
  • Fairbanks, Chapter 8: The Domain Model
4. Design as Abstraction (2/11)
Req Readings:
  • Fairbanks, Chapter 10: The Code Model
  • Fairbanks, Chapter 11: Encapsulation and Partitioning
HWs: HW1 due
5. Notations for Design (online lecture) (2/18)
Req Readings:
  • Fairbanks, Chapter 12: Model Elements
  • Fairbanks, Chapter 13: Model Relationships
6. Architectural Styles (2/25)
Req Readings:
  • Fairbanks, Chapter 2: Software Architecture
  • Fairbanks, Chapter 14: Architectural Styles
HWs: HW2 due
Midterm Exam (3/3)
7. Design for Change (3/24)
Req Readings:
8. Design Patterns (3/31)
Req Readings: HWs: HW3 due
9. Following a Design(4/7)
Req Reading:
10. Programming Styles(4/14)
Req Readings from Lopes, Exercises in Programming Style:
  • Prologue
  • Chapter 3, Monolithic
  • Chapter 4, Cookbook
  • Chapter 7, Infinite Mirror
  • Chapter 16, Introspective
  • Chapter 17, Reflective
  • Chapter 18, Aspects
  • Chapter 25, Persistent Tables
  • Chapter 26, Spreadsheet
  • Chapter 27, Lazy Rivers
  • Chapter 28, Actors
HWs: HW4 due
11. Design for Reuse (4/21)
Req Readings:
12. Design Ecosystems(4/28)
Req Readings: HWs: HW5 due
13. Review and Project Presentations (5/5)
Req Reading: none
Final Exam: TBD

Course Policies


If you have a general question about an assignment or course content, first check piazza to see if someone has already answered your question. If not, post your question in piazza, where your question may be answered by other students or the course staff. For questions about grades, contact one of the TAs by email.

Office Hours

Office hours are times that we commit to being in our office, door open, first come, first served. You do not need an appointment, and no appointments are accepted. If you cannot make the scheduled office hours, then we can try to set up an appointment. Please note that I am seldom available after 5:00 pm. We will inform you in class or on the discussion board if we have to miss office hours.


Weekly readings will be from the course textbook as well as from a number of classic software engineering papers. You should read the assigned readings before each class. Many of the readings are available online. For these readings, you will need to access the link from a device connected through a Mason IP address. If you are accessing the readings from off campus, you can use the Mason VPN.


The course website lists the sylabus, course schedule, and links to the lecture slides. Assignments and announcements as well as discussion will be posted on Piazza. Grades will be posted on Blackboard.


There will be a midterm exam and a comprehensive final exam. Both will be closed-book and in-class. Exams will cover material from the lectures as well as from the assigned readings.


Unless arrangements are worked out in advance, missed exams cannot be made up. As some of the HW assignments involve peer evaluations where groups give and receive feedback with other groups, late HW submissions impact not only the groups themselves but other students in the course. Thus, 10% will be deducted for late HW assignments and late HW assignments will only be accepted for 24 hours after the due date. HW assignments submitted more than 24 hours late will receive a zero. If you’re worried about being busy around the time of a HW submission, please plan ahead and get started early.

In-Class Activities

As software architecture and design require achieving a mastery of design skills, each class will include an extended in-class group activity. Each activity will result in a small deliverable, often in the form of diagrams, sketches, or lists. In-class activities will each be worth 10 points and will be graded for participation as follows:

Satisfactory: put forth a good effort in accomplishing the activity's goals (10/10)
Needs improvement: substantially misunderstood the activity or did not make meaningful progress (5/10)
Not present: did not submit deliverable from activity (0/10)

To accomodate planned or unplanned absences, the three lowest scores (including absences) will be dropped.


The assignments in the course will be in the form of a group project. You will select three competing open source applications that each offer an alternative architecture and design for the same underlying problem. Over the course of the semester, you will reverse engineer the architecture and design of each and compare and constrast the approaches taken.

You are allowed to work on the HWs collaboratively using one of two models:

  1. Work on and submit all HWs independently.
  2. Collaborate from start to finish on all HWs with at most two other students in SWE 621. You must submit one solution as a group for each HW. Additionally, each group member will separately submit a peer evaluation, describing the involvement of each group member (including themselves) in the HW assignment.

Note: You are NOT ALLOWED to include “guest names.” Every person listed as a collaborator must contribute. If someone is listed as a collaborator but did not contribute, all will be given a zero on the assignment and reported to the university honor committee.

In-Class Activities: 10%
HWs and project presentation: 40%
Mid-term exam: 20%
Final exam: 30%
Honor Code

GMU is an Honor Code university; please see the Office for Academic Integrity for a full description of the code and the honor committee process, and the Computer Science Department’s Honor Code Policies regarding programming assignments. The principle of academic integrity is taken very seriously and violations are treated gravely. What does academic integrity mean in this course? Essentially this: when you are responsible for a task, you will perform that task. When you rely on someone else’s work in an aspect of the performance of that task, you will give full credit in the proper, accepted form. Another aspect of academic integrity is the free play of ideas. Vigorous discussion and debate are encouraged in this course, with the firm expectation that all aspects of the class will be conducted with civility and respect for differing ideas, perspectives, and traditions. When in doubt (of any kind) please ask for guidance and clarification.

Accommodations for Disabilities

If you have a documented learning disability or other condition that may affect academic performance you should: 1) make sure this documentation is on file with the Office for Disability Services to determine the accommodations you need; and 2) talk with me to discuss your accommodation needs.


Students must use their MasonLIVE email account to receive important University information, including messages related to this class. See MasonLive for more information.

Other Useful Campus Resources
Writing Center
University Libraries
Counseling and Psychological Services (CAPS)
University Policies
GMU Academic Calendar