All Class announcements will be made here.
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 notes will be posted in Learn on Monday and Wednesday by 10 AM (I will strive to upload them even before but if you look into Learn by 10 AM on Mon/Wed you should be able to see them).
Anecdotal Winter 2020 feedback from students indicate that detailed lecture notes were more useful than long videos. That is what I will strive to do in this course. In places where I deem videos will be useful, I will make them available. Otherwise it will be detailed slides with possible annotation from me.
Official administrative entry and outline.
Important dates and information will be posted here on this website. The official syllabus is also the contents on this website. You can reach this website from the corresponding entry in learn.uwaterloo.ca.
While the course does not have a required textbook, the following are good readings on this subject.
This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza.
If you have any problems or feedback for the developers, email team@piazza.com.
Find our class page at: https://piazza.com/uwaterloo.ca/spring2020/cs446ece452cs646/home
If you need to ask a question regarding the grades or something personal then please email the instructor. Prefix the subject line with CS446/ECE452/CS646 for a prompt reply.
All TAs will be answering questions mostly only on piazza. If there is a specific need to actually talk to a TA please email them to get a virtual meeting link that can be used. They have preferred times set up (below). Please try to schedule during these times as much as possible.
The class will use the Learn system for all submissions and grades. Once you are registered, you will be able to access learn and check the dropboxes for submissions and view your grades.
Date | Topics | Notes |
---|---|---|
May 11 | Introduction to the Class, Expectations, Admin | Slides |
May 13 | Introduction to Software Architecture. | Slides |
May 18 | Victoria Day. No Class. | |
May 20 | Non-Functional Properties. | Slides |
May 25 | Intro to building Android apps - Part 1 | |
May 27 | Intro to building Android apps - Part 2 | |
June 1 | UML Intro | Slides |
June 3 | Architectural views & decomposition | Slides |
June 8 | Project Scheduling | Slides |
June 10 | Cost Estimation | Slides
Additional Optional Reading |
June 15 | Project Proposal Prep. No class. | |
June 17 | Project Proposal Prep. No class. | |
June 22 | Arch Styles Intro | Slides |
June 24 | Arch Styles - Part 1 | Slides |
June 29 | Arch Styles - Part 2 | See Above. |
July 1 | Canada Day. No Class. | |
July 6 | Project Prototype Demo Prep. No Class. | |
July 8 | Project Prototype Demo Prep. No Class. | |
July 13 | Design Patterns Introduction | Slides |
July 15 | Design Patterns - Part 1 | Slides |
July 20 | Design Patterns - Part 2 | Slides |
July 22 | Design Patterns - Part 3 | Slides |
July 27 | Project finalization Prep. No class. | |
July 29 | Project finalization Prep. No class. | |
Aug 3 | Civic Holiday | |
Aug 5 | Evaluate final demo and choose best project | |
Aug 7 - 14 | Oral Exam Week | |
The project forms an integral part of this course. Here are some of the hard requirements:
The two goals of the project is to
There are only three soft 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. If your app has any of these components, then you are responsible to have the DB or server infrastructure of crowd set up so that you can demo the app and we can test it too.
If after the proposal, we feel that the app idea is too simple or too easy, then we will provide the team with a basic idea. The teams will then have to implement our suggested idea. We highly encourage the teams to come up with their own creative ideas. See below for some great ideas from the past.
Pivot: 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).
Here is the document with the Pivot for each team.
The projects will be completed in teams of six. If it has less than six or more than six, you will need to explicitly get permission from the instructor. You should select your own team; if you do not have a team or your team has less than six members, please post on the appropriate Piazza thread.
Project grades need not be the same for all team members. Each team member will get a score based on effort. Additionally, projects will have a difficulty scale applied to them by the instructor and TAs. The scale formula will be:
(total project score for the team member across all deliverables + bonus) * (scale/100) = final project gradeScale will range between 0 and 100. The components of the scaling mark will be determined by:
https://developer.android.com/studio/install
Use the above link to start installing Android Studio in Linux/Win/Mac Machines beforehand. The download size may vary based on the operating system/region and locale ( 800 MB ) for Android Studio alone. Always choose the latest version of Android Studio and corresponding Gradle plugin to build APK files, which helps in reviewing code and evaluation.
SDK Installation: Use the latest Stable Android Version for SDK Compilation rather than the beta version. The preferable version can be from Android M ( API 23 ) to Android Q ( API 29 ). As soon as installing the Android Studio, start selecting the preferred android version ( at least 1 ) and download the corresponding emulator, SDK Library, SDK Build Tools, and other utilities. Kindly allocate around 20 GB physical space for Android Studio and SDK Installation and a stable internet connection to complete all the installation setup in advance.
Emulator vs. Android Phone: Kindly use Android Mobile phone for testing by connecting it via USB for debugging, which will have a low impact on system resources while building Android apps. Otherwise, kindly install x86 Google Play/Google API Supported Android emulator for instant access and testing. Do not install ARM or other arch types that are not optimized for cold startup/booting.
Reliable Network Connection: Kindly ensure about reliable network connection for downloading Android Studio and SDK Libraries. Additional data will be required while using third party libraries to build an application or while syncing via Gradle.
A selection of project videos from 2017 are included in this playlist to help you get an idea of the scope of projects suitable for the course.
In order to check if you as a student has gone through the class slides every week, we will have various quizzes and assignments. In total there will be 6 quizzes and 2 assignments.
The quizzes should take no more than 10-15 minutes each if you have gone through the material. They will be multiple choice, T/F type quizzes on that weeks material. The quizzes are individual and not for teams.
The two assignments will be to assess how much of the architecture styles and design patterns you have understood from the lecture slides. They will be group assignments.
There will be no written finals in this course. Instead we will do an oral exam. Details are below:
Deliverable | Date | Format | Value |
---|---|---|---|
Quiz 1 | May 15 | On Learn | 5% |
Quiz 2 | May 22 | On Learn | 5% |
Project Team Selection | May 22 | Create on Learn | No Grade |
Quiz 3 | June 5 | On Learn | 5% |
Quiz 4 | June 12 | On Learn | 5% |
D1: Proposal Document | June 19 | Upload to Learn | 5% |
D2: Architecture Style Examples | July 3 | Upload to Learn | 10% |
Quiz 5 | July 3 | On Learn | 5% |
D3: Prototype Document + Demo | Upload to Learn | 10% | |
D4: Design Pattern Examples | July 24 | Upload to Learn | 10% |
Quiz 6 | July 24 | on Learn | 5% |
D5: Arch + Design Document | Upload to Learn | 10% | |
D6: Final Documentation + Video | Aug 5 (Note this is a Wed) | Upload to Learn | 5% |
Oral Exam | Aug 7 - 14 | Virtually | 20% |
For graduate students only: in addition to the project and other assessments above, you will perform an individual graduate project. The graduate project is worth 25% of your grade; your final grade will be calculated by scaling down the above assessments from 100% to 75%.
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: