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.
Lectures are held Tuesday and Thursday from 1600 to 1720 in MC 2038. My office hours are by appointment at DC 2332. Official administrative entry.
Important dates and information will be posted here on this website. The official syllabus is also the contents on this website.
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.
The best way to get help is via email. Please try not to leave your questions until the last minute. Prefix the subject line with CS446/ECE452/CS646 for a prompt reply.
You could also use Piazza to discuss with your fellow classmates. Please sign up here. The Piazza page for the class is here.
The course is broadly broken down into two components:
Date | Topics | Notes |
---|---|---|
Jan 3 | Introduction | |
Jan 5 | Architecture Overview | |
Jan 10 | Architectural views & decomposition | |
Jan 12 | Non-functional properties | |
Jan 17 | Project Proposal Prep | Attendance Compulsory |
Jan 19 | Project Proposal Prep | Attendance Compulsory D2/D4 signup |
Jan 24 | Project Proposal Presentations |
|
Jan 26 | Project Proposal Presentations |
|
Jan 31 | Arch styles intro | |
Feb 2 | Arch Styles (D2) |
|
Feb 7 | Arch Styles (D2) | |
Feb 9 | Arch Styles (D2) |
Date | Topics | Notes |
---|---|---|
Feb 14 | Midterm Review | |
Feb 16 | Project time | |
Feb 21 | Reading Week | |
Feb 23 | Reading Week | |
Feb 28 | Project Prototype Demo (D3) |
|
Mar 2 | Project Prototype Demo (D3) |
|
Mar 7 | Design Introduction | |
Mar 9 | Design Patterns (D4) | |
Mar 14 | Design Patterns (D4) | |
Mar 16 | MVC/MVP, Cloud/REST | |
Mar 21 | Quick Recap | |
Mar 23 | Class cancelled for orals | |
Mar 28 | Class Cancelled |
|
Mar 30 (0400 PM - 0600 PM) | Final Demo |
|
Apr 24 (0400 PM - 0630 PM) | Final Exam (Open book, open notes, and anything on paper) |
The project forms an integral part of this course. The goal of the project is to produce a significant mobile app that performs some useful function. This software must have a considered and defensible design and architecture. One requirement for the implementation of the app is that it must work on at least two platforms (iOS and Android).
There are only three real restrictions on the app idea itself: no database management apps will be accepted (e.g., simple CRUD apps that do not make sense in a mobile context); apps that require crowd buy-in are not acceptable (e.g., apps that would require large numbers of people to contribute content to be viably useful); apps that require a complex server infrastructure are also not acceptable.
You must demo your app on a mobile device (iOS or Android). While the app can be HTML5-based, it must be deployable in a standard app container. The library has iOS and Android devices that can be signed out. After the prototype demo we will provide a 'pivot' to each group; this will consist of a new or modified requirement for your app that you will have to include for the final demo (and write about in the architecture and design deliverable).
The projects will be completed in teams 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 set you up.
Project grades need not be the same for all team members. Each team member will get a score based on effort. Projects will have a difficulty scale applied to them by the instructor and TAs. The scale formula will be:
(project score for the team member + bonus) * scale = final project gradeScale will range between 0.75 and 1.0. The components of the scaling mark will be determined by:
A selection of project videos from 2014 are included in this playlist to help you get an idea of the scope of projects suitable for the course.
Deliverable | Date | Format | Value |
---|---|---|---|
Project Groups | Jan 12 | E-Mail me and TAs | Pass/Fail |
Project Proposal Prep | Jan 17/19 | Attendance in class | Pass/Fail |
D1: Proposal Document | Jan 23 | Email me and TAs | 5% |
D1: Proposal Presentations | Jan 24/26 | In class | Pass/Fail |
D2: Architecture Activity | Feb 2/7/9 | In Class | 10% |
D3: Prototype Document | Feb 27 | Email me and TAs | 5% |
D3: Prototype Demo | Feb 28/Mar 2 | In class | Pass/Fail |
D4: Design Activity | Mar 7/9/14/16 | In Class | 10% |
D5: Arch + Design Document | Mar 20 | Email me and TAs | 10% |
D5: Arch + Design Oral Exam | Mar 22/23/24 | Oral exam location TBD | 10% |
D6: Final Documentation | Mar 27 | Email me and TAs | 5% |
D6: Presentation + Video | Mar 28/30 | In Class | 5% |
Final Exam | TBD | Location TBD | 50% |
You must pass the final exam and all pass/fail assignments to pass the course.
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; your final exam grade will only account for 25% of your final grade instead of 50%.
Three types of graduate projects are possible:
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.
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.
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: