CPSC 410 logo: Advanced Software Engineering

CPSC 410: Advanced Software Engineering is offered by the Department of Computer Science at the University of British Columbia.

Important: this is a group-based, development-heavy course. You will be required to propose, design, build, validate, and demonstrate a large software product to the class, the TAs, and the instructor. Do not take this project lightly as it will be a huge amount of work and comprises the majority of your final grade.

Lectures are held Monday, Wednesday, and Friday 1300 to 1350 in Dempster 110. My office hours are TBD but will be held in ICCS 309. Official administrative entry.

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 Amazon.ca). Slides for this book are available online.
  • Ian Gorton. Essential Software Architecture. Available online or for purchase (e.g., through Amazon.ca). 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 Amazon.ca).
  • Fred P. Brooks Jr. The Design of Design. Unfortunately not in the library but still available through Amazon.ca.


The best way to get help is via Piazza; please prepend your questions with your TAs name to ensure you get a quick response (TAs will be assigned to project groups after they are all formed). Sign up for piazza here. You can reach me at rth.se2(at)gmail.com for questions not appropriate for Piazza.

Course Scheduletop

** represents slides from last year that have not yet been updated but represent placeholders for your reference.
DateVideosSlidesIn Class
Sept 9
Introduction Lecture
Sept 11 Architecture intro Kitchen Design
Sept 14 Architectural views & decomposition System Decomposition
Sept 16 Non-functional properties NFP Alternatives
Sept 18 NFP Stakeholders
Sept 21 Specifications
Sept 23 Game Show
Sept 25 Game Show
Sept 28 Deliverable 1 Project Proposals
  1. Group 31 Evil Robots
  2. Group 30 Deep Ocean Thunderballs
  3. Group 29 Group 29
  4. Group 28 Cachemoney
  5. Group 27 Yippee
  6. Group 26 Group 26
  7. Group 25 Group 25
  8. Group 24 HeHeTeam
  9. Group 22 Cool Group 22
  10. Group 21 A.A.A.S.
  11. Group 20 noncoopers
Sept 30 Project Proposals
  1. Group 19 Group 19
  2. Group 18 What's for Dinner by Food Porn Inc.
  3. Group 17 Group 17
  4. Group 16 <script>alert(“DROP TABLE *”)</script>
  5. Group 15 OVO
  6. Group 14 Swap'em
  7. Group 13 Bleinder
  8. Group 12 Kaiju
  9. Group 11 BHPK team
  10. Group 10 Team Jobenalda
  11. Group 9 Team Taking This To Graduate
Oct 2 Project Proposals
  1. Group 8 TBD
  2. Group 7 Fantastic Four
  3. Group 6 Click to Run
  4. Group 5 Osis_2.0
  5. Group 4 Group 4
  6. Group 3 Cupcakes
  7. Group 2 Untitled
  8. Group 1 Utoappia
Oct 5 Architectural Styles Intro
Architectural Styles (complete)
  • Batch Sequential
  • Pipe & Filter
Oct 7
  • Shared Memory
  • Layered
  • Interpreter
Oct 9
  • Implicit Invocation
  • Peer to Peer
Oct 12 No Class (Thanksgiving)
Oct 14 Living Architectures & Style Activity
Oct 16 Midterm
Oct 19 Guest Lecture: Testing in Practice
Oct 21 Testability
Oct 23
Oct 26 TBD (was NFP Measurement but was covered along with Specifications)
Oct 28 Testing: Coverage
Oct 30 Mutation Testing
Nov 2 Prototype Demos
Nov 4 Prototype Demos
Nov 6 Prototype Demos
Nov 9 Cloud + Rest**
Nov 11 No Class (Remembrance Day)
Nov 13 MVC / MVP
Nov 16 Analytics & A/B Testing
Nov 18 SOLID
Nov 20 SOLID Activity
Nov 23 Dependency Injection
  • Dependency Injection
  • Open/Close Principle
Nov 25 Guest Lecture: Scrum Master
Nov 27 Course Review
Nov 30 Final Demo
Dec 2 Final Demo
Dec 4 Final Demo
TBD Final Exam


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 architecture. 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) and 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).

You must demo your app on a mobile device (iOS, Android, BB10, WP8, or FirefoxOS). Apps must be written in Javascript and deployed to the phone using Apache Cordova. You can use any libraries you wish (e.g., React, Web Components, etc.). 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.

Projects will have a difficulty scale applied to them by the instructor and TAs. The scale formula will be:

(project + bonus) * scale = final project grade
Scale will range between 0.75 and 1.0. The components of the scaling mark will be determined by:
  • 5: completeness (compared to proposal)
  • 5: utility
  • 5: polish
  • 10: difficulty
There will also be various sources of bonus marks during the term; each will be worth 2%:
  • Best pitch
  • Best prototype demo
  • Best final demo
  • Accepted to curated App Store (iOS, Blackberry, Windows Phone)
NOTE: The expectation is that you will work approximately 12 hours per week on this course; at least 5 of these hours should be on the project. Given that the course lasts 13 weeks, each team member is expected to work on the project at least 65 hours. You should be able to accomplish something pretty great in this time; please make the most of this opportunity. While lines of code is a terrible metric, no past project has been less than 5 KLOC and most range between 10-20 KLOC.


Deliverable Date Format Value
SE Impressions Sept 9 In Class Pass/Fail
D0: Project Groups Sept 25 - Pass/Fail
D1: Proposal Presentations Sept 28/30/Oct 2 In Class (+ online) 5%
Midterm Oct 16 In Class 10%
D2: Prototype Demonstration Nov 2/4/6 In Class 5%
D3: Architecture & Design Nov 2 Oral Exam (+ online) 15%
D4: Project Acceptance Test Nov 30 Oral Exam (+ online) 15%
D5: Presentation + Video Nov 30/Dec 2/4 In Class 10%
Final Exam TBD TBD 40%

2014 Project Videos

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.

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


  • Late submissions will not be accepted except in case of documented emergency.
  • For special accommodation for the exam or midterm, contact the Access and Diversity Office.
  • In order to maintain a culture of academic integrity, members of the University of British Columbia community are expected to promote honesty, trust, fairness, respect and responsibility. [See the academic integrity site for more information.]
  • Everyone involved with CPSC 310 is responsible for understanding and abiding by the University's Respectful Environment Statement. [See the complete statement.]
  • As this course is heavily oriented around the group project, and the groups are formed early, it is a difficult class to join late. As such, the advisors will not place new students into CPSC 410 after Sept 14.