SE2 logo: Software Design and Architecture

SE2: Software Design and Architecture is the second course of the three software engineering capstone project courses, offered jointly by the David R. Cheriton School of Computer Science and the Department of Electrical and Computer Engineering at the University of Waterloo.

SE2 is offered under course codes CS446, SE464, and ECE452.

Lectures are held Tuesday and Thursday from 16:00 to 17:20 in MC 1056. Tutorials are held Friday from 14:30 to 15:20 in MC 4060. My office hours are TBD but will be held in DC 3351. Official administrative entry.

Important dates and information will be posted to the course twitter feed.

While the course does not have a required textbook, much of the materials will be sourced from the first two texts; additional books are supplementary.

  • Richard N. Taylor, Nenad Medvidovic, and Eric Dashofy. Software Architecture. Foundations, Theory, and Practice. Available in the library or for purchase (e.g., through Slides for this book are available online.
  • Ian Gorton. Essential Software Architecture. Available online or for purchase (e.g., through Slides for this book are available online.
  • Fred P. Brooks Jr. The Mythical Man Month. Available in the library or for purchase (e.g., through
  • Fred P. Brooks Jr. The Design of Design. Unfortunately not in the library but still available through


The best way to get help is via email. You can reach me at rth.se2(at)gmail. Please try not to leave your questions until the last minute.

Nominal Outlinetop

This is the high-level outline provided by the department; while this is general guideline the course will be adjusted according to your feedback, interests, and experience.

Introduction (1h)

Why design? Input, output, and constraints of the design process. Types of design. Relationship to software quality and evolution. Design in more mature implementation technologies.

Software Design Process Models (3h)

Design as search. Design spaces. Design state, goal structure, generative design operations, early quantitative evaluations, control of design process. Basic models of design (transformational, plan/architecture driven). Relationship to other life-cycle activities.

Arch/Design Representations (9h)

What should be represented (structure, behaviour)? Informal representations of design, examples of design notations. Formal representation of design. Domain specific architecture descriptions. Role of standards, reference architectures. Design documentation.

Design Plans/Arch (9h)

Review of small/medium scale plans (data structures, programming language structures, concurrency). Plans/architectures for common types of software systems (translators, embedded, real-time, user interface).

Design Strategies and Methods (6h)

Design strategies. Selected methods: object modelling technique, structured design, real-time, user interfaces. Methods for design with off-the-shelf components.

Design Assessment (3h)

Assessment dimensions and factors affecting their relative importance. Design tradeoffs. Evolvability/understandability criteria. Design complexity metrics. Assessment strategies (analytical, simulation, rapid prototyping), example: response time/throughput estimation.

Design Verification (3h)

Design reviews, scenarios and test cases, testing of executable design representations. Verification of properties.

Tentative Course Scheduletop

It is important to note that this schedule is very susceptible to change based on your interests and how the class is progressing.

Tuesday September 13 - Introduction & project description

Thursday September 15 - Architecture introduction

Tuesday September 20 - Proposal presentations

Deliverable #1 (proposal description) due @ 0800. [Deliverable details]
Presentation order listed below:
  1. Connoisseur
  2. Course Share
  3. Meet My World
  4. Wormhole
  5. Restaurant POS
  6. Student House Renting
  7. Thoughts Organizer
  8. It's Party Time
  9. Travel Buddy

Thursday September 22 - Arch Foundations

Tuesday September 27 - Arch NFPs

Thursday September 29 - Security & Arch Activity

Tuesday October 4 - Design Foundations

Thursday October 6 - Design Qualities

Tuesday October 11 - GWT Architecture

Thursday October 13 - DLS: Ed Lazowska

Deliverable #2 (arch & design properties) due @ 0800. [Deliverable details] Ed Lazowska will be giving the Distinguished Lecture called "Computer Science: Past, Present, and Future" in DC 1302 from 4:30 to 5:30 on this day. Class will not be held this day and you are strongly encouraged to attend Dr. Lazowska's talk.

Tuesday October 18 - Arch Styles A

Thursday October 20 - Arch Styles B

Tuesday October 25 - Prototype demos

Deliverable #3a due @ 0800, #3b due in class. [Deliverable details]
Presentation order listed below:
  1. WiFinder (formerly Travel Buddy)
  2. It's Party Time
  3. Thoughts Organizer
  4. Waterloo Event Finder
  5. Student House Renting
  6. Restaurant POS
  7. Wormhole
  8. Meet My World
  9. Course Share
  10. Connoisseur
  11. WatR

Thursday October 27 - Arch & design representations

Tuesday November 1 - Design patterns / MT Review

Thursday November 3 - Mid-Term

Tuesday November 8 - Mid-Term postmortem

No slides this class; we just went over the midterm in detail.

Thursday November 10 - Design patterns: Observer, Singleton, & Decorator

Tuesday November 15 - Design patterns: Factory & Facade

Thursday November 17 - MVP/MVC

Deliverable #4 (architecture & design) @ 0800 via email. [Deliverable Details] [Lecture Notes]

Tuesday November 22 - Refactoring to patterns

Thursday November 24 - Guest Lecture

Adam Nance from Google will be joining us to tell us about mobile development in the real world.

Tuesday November 29 - Final Presentations

Deliverable #5 (source code) due @ 0800. Deliverable #6 (presentations) due in class.
  1. Restaurant POS
  2. WatR
  3. Course Share
  4. It's Party Time
  5. Thoughts Organizer
  6. Meet My World

Thursday December 1 - Final Presentations

Deliverable #6 (presentations) due in class.
  1. Waterloo Event Finder
  2. Connoisseur
  3. Wormhole
  4. Student House Renting
  5. WiFinder
  6. Learn to Run

Tutorial Scheduletop

A tutorial will not be presented every week. On the weeks a tutorial is not being presented the TAs will conduct office hours in DC 3334 (the SWAG lab). The tutorial is an excellent time to meet with the TAs with any questions, concerns, or problems. The tutorial / office hour list will be updated as the term progresses; announcements about Friday's tutorial will always be available by the start of class on Tuesday.


The project forms an integral part of this course. The goal of the project is to produce a significant piece of software that performs some useful function. This software must have a considered and defensible design. The software must be executable on at least two mobile platforms (e.g., two of Playbook, TouchPad, Android, and iPad). You can use phone form factors instead of tablets if you wish, but the same platform restriction applies.

The multi-platform requirement suggests developing your system using some kind of cross-platform development methodology which leads to the one of the only limitations being placed on the project: you will use Google's GWT framework to build your app. GWT allows you to write your application in Java and automatically cross-compiles the result to javascript that works on multiple browsers and platforms; UI theming is done via HTML/CSS. GWT provides a good platform to build on and will force each team to consider their architecture more carefully as your system must interoperate with various frameworks and deal with various limitations of being deployable to a handheld device. Your application can still work on a full browser as well if you wish.

The projects will be completed in teams, preferably in groups of four. You are free to select your own team; if you do not have a team or your team has less than four members, please talk to me and I will try to help. Each of the deliverables for the project can be considered assignments.

Deliverable #1: Project proposal. DUE September 20 @ 08:00. [Deliverable Details]

An initial project proposal is due via email. Teams will present their proposals in class.

Deliverable #2: Architecture & design goals. DUE October 13 @ 08:00. [Deliverable Details]

Deliverable #3: Prototype demos. DUE October 25 @ 0800 (status) and in class (demo). [Deliverable details]

Deliverable #4: Architecture & design. DUE November 17 @ 08:00. [Deliverable Details]

An initial project proposal is due via email to rth.se2@gmail on September 20 @ 0800.

Deliverable #5: Project source code. DUE November 29 @ 08:00. [Deliverable Details]

Deliverable #6: Project presentations. DUE November 29 / December 01 in class. [Deliverable Details]

Deliverable #7: Technical tutorial. DUE December 05 @ 08:00. [Deliverable Details]


Design Impressions: Pass/Fail

Deliverable #1: Project proposalPass/Fail

Deliverable #2: Project architecture and design goals10%

Deliverable #3: Project prototype demonstrationPass/Fail (+bonus)

Deliverable #4: Project architecture and design20%

Deliverable #5: Project implementationPass/Fail

Deliverable #6: Project presentation15% (+bonus)

Deliverable #7: Project technical tutorial15% (+bonus)

Mid-Term: 10%

Final: 30%

You must pass the final exam and all pass/fail assignments to pass the course.

Graduate Student Projecttop

For graduate students only: in addition to the mobile project, you will perform an individual graduate project. The graduate project is worth 25% of your grade; this will come by compressing the value of your midterm, final, and mobile project grade to 75% of your total mark.

Three types of graduate projects are possible:

  1. Build a Software Tool:

    The goal of this style of project is to identify some problem developers encounter in practice, find some solution, and validate that the solution helps with the initial problem. I would recommend drawing upon your experience as you write code to identify some problem that has inhibited you in the past and fix it.

    The outcome of this project will be a short (5-6 page) paper describing the problem, your solution, a comparison to related approaches, and some form of validation.

  2. Literature Survey:

    The goal of this kind of project is to gain a more complete understanding of a topic relevant to this course. The outcome of this project will be a critical summary of the state-of-the-art on your selected topic; this summary should be 8-10 pages. It is essential that this summary synthesizes the surveyed literature to identify important themes, findings, and open questions.

  3. Use an Advanced Software Development Tool

    The goal of this project is to provide a validation of some previously-existing development tool from the research community. The tool you validate must be related to the course material. The outcome of this project will be a 6-8 page paper describing your experience with the tool outlining its strengths, weaknesses, and avenues for future improvement.

There are two deliverables for the graduate project:

  1. Project proposal. Before you undertake your project you will need to submit a proposal for approval. The proposal should be short (1-2 pages in ACM format). The proposal should include a problem statement, the motivation for the project, a set of objectives you aim to accomplish, and a set of milestones. I will read these and provide comments. The proposal is not for marks but _must_ be completed in order to pass the course. This will be due on October 3 @ 0800 via email.
  2. Written report. The required length of the written report varies from project to project; all reports must be formatted according to the ACM format and submitted as a PDF. This artifact will constitute 100% of the graduate project grade. This will be due on December 05 @ 0800 via email.


Academic Integrity

  • In order to maintain a culture of academic integrity, members of the University of Waterloo community are expected to promote honesty, trust, fairness, respect and responsibility. [See the academic integrity site for more information.]


  • A student who believes that a decision affecting some aspect of his/her university life has been unfair or unreasonable may have grounds for initiating a grievance. Read Policy 70, Student Petitions and Grievances, Section 4.
  • When in doubt please be certain to contact the department’s administrative assistant who will provide further assistance.


  • A student is expected to know what constitutes academic integrity to avoid committing an academic offence, and to take responsibility for his/her actions.
  • A student who is unsure whether an action constitutes an offence, or who needs help in learning how to avoid offences (e.g., plagiarism, cheating) or about “rules” for group work/collaboration should seek guidance from the course instructor, academic advisor, or the undergraduate Associate Dean.
  • For information on categories of offences and types of penalties, students should refer to Policy 71, Student Discipline.
  • For typical penalties check Guidelines for the Assessment of Penalties.


  • A decision made or penalty imposed under Policy 70 (Student Petitions and Grievances) (other than a petition) or Policy 71 (Student Discipline) may be appealed if there is a ground.
  • A student who believes he/she has a ground for an appeal should refer to Policy 72 (Student Appeals).