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.

Contacttop

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 No Class
Oct 14 Architectural Style Activity
Oct 16 Midterm
Oct 19 Guest Lecture: Testing in Practice
Oct 21 Midterm postmortem
Oct 23
Oct 26 Testability
Oct 28 Testing: Coverage
Oct 30 Testing: Mutation
Nov 2 Prototype Demos Monday
  • Map/Location-centric
  • #5 Reflect
  • #9 Where’d I Park?
  • #21 iLoc
  • #24 HeHeDelivery
  • #25 Locl
  • #30 TripJournal
  • Making Food
  • #17 Spoon Feed Me
  • #18 Food Oracle
  • #28 Recipal
  • Other
  • #14 SwapEm
Nov 4 Prototype Demos Wednesday
  • Choosing an Event
  • #7 Event Hub
  • #16 Wutudu
  • #22 Quick Byte
  • #27 Yippee!
  • #31 Nom Nom
  • Organizing an Event
  • #3 Grouplus
  • #12 Hoot
  • #15 Kontribute
  • #29 Let’s Do This
  • Other
  • #10 Tuneline
Nov 6 Prototype Demos Friday
  • Scheduling
  • #2 Trackr
  • #8 LyfeCraft
  • #11 Alarm Plus
  • #19 PEPPA
  • Games
  • #1 Trading Fever
  • #4 PictureThis!
  • #6 RunToClick (gamifiying exercise)
  • #26 DSD
  • Other
  • #13 Digilib
  • #20 Tether
Nov 9 MVC / MVP
Nov 11 No Class Remembrance Day No Class
Nov 13 Cloud Computing
Nov 16 Guest Lecture: Understanding Artifact Provenance
Nov 18 Guest Lecture: Relating Architecture to Project Management
Nov 20 DevOps Stack
Nov 23 DevOps Deployment
Nov 25 SOLID
Nov 27 Course Recap
Nov 30 Final Demo Monday
  • Other
  • #20 Tether
  • #13 Digilib
  • Games
  • #26 DSD
  • #6 RunToClick
  • #4 PictureThis!
  • #1 Trading Fever
  • Scheduling
  • #19 PEPPA
  • #11 Alarm Plus
  • #8 LyfeCraft
  • #2 Trackr
Dec 2 Final Demo Wednesday
  • Other
  • #10 Tuneline
  • Organizing an Event
  • #29 Let’s Do This
  • #15 Kontribute
  • #12 Hoot
  • #3 Grouplus
  • Choosing an Event
  • #31 Nom Nom
  • #27 Yippee!
  • #22 Quick Byte
  • #16 Wutudu
  • #7 Event Hub
Dec 4 Final Demo Friday
  • Other
  • #14 SwapEm
  • Map/Location-centric
  • #30 TripJournal
  • #25 Locl
  • #24 HeHeDelivery
  • #21 iLoc
  • #9 Where’d I Park?
  • #5 Reflect
  • Making Food
  • #28 Recipal
  • #18 Food Oracle
  • #17 Spoon Feed Me
Dec 16 1530-1800 Final Exam Location: ANGU 098

Projecttop

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.

Assessmenttop

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 (optional: final can replace) Oct 16 In Class 10%
D2: Architecture & Design Nov 2-6 Oral Exam (+ online) 15%
D3: Prototype Demonstration Nov 2/4/6 In Class 5%
D4: Project Acceptance Test Nov 30 Oral Exam (+ online) 15%
D5: Presentation + Video Nov 30/Dec 2/4 In Class 10%
Final Exam Dec 16 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.

Policiestop

  • 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.