CPEN 321: Software Engineering (Fall 2019)


  1. Overview
  2. Staff
  3. Communication and Links
  4. Project
  5. Course Schedule
  6. Grading
  7. Absence
  8. Acknowledgements
  9. University Policies

1. Overview

The course explores engineering principles for building non-trivial software-intensive systems: requirement specification, design, implementation, verification, and maintenance. The course uses a group project as the basic learning vehicle, providing students with an environment for applying the learned principles in practice while coping with constraints encountered when working on a real team: uncertain requirements, tight deadlines, etc. Students are evaluated based on their understanding of the software engineering principles and their ability to apply these principles in practice.

Learning Objectives

By the end of the course, students will learn several fundamental skills in modern software development:

Course Format

Course Prerequisites

One of EECE 210, CPEN 221, CPSC 210, EECE 309.

2. Staff


Prof. Julia Rubin

Mon. 3-4:30pm, MCLD 202
Wed. 5-6:30pm, MCLD 202

Office hours:
Mon. 4:30-5:30pm, KAIS 4053 (or by appointment)


Harsha Kadiyala, Sahar Badihi, Michael Cao,
Khaled Ahmed, Bang Chi Duong

Mon. 10am-12pm, MCLD 358
Tue. 3-5pm, MCLD 358
Wed. 10am-12pm, MCLD 348

Office Hours:
Mon. 12-1pm, KAIS 4095 (or by appointment)

3. Communication and Important Links

4. Project

A major part of the course is the group project. The project simulates real development settings, where development teams communicate with customers to implement software that satisfies the customers’ requirements. The intent of this project is to give you the opportunity to apply the course concepts to a real system.

Milestones and Reports

5. Course Schedule

Note that this is a tentative week-by-week guide and thus is subject to change.




Project Milestones


Wed, Sept 4, 2019

Intro, what is SE



Mon, Sept 9, 2019

Software Lifecycle, Development Processes

Tutorials: Intro to Android


Wed, Sept 11, 2019


September 11, 11:59pm: groups are formed. Each group proposes an idea that they would like to implement.


Mon, Sept 16, 2019

Groups: project pitches

Tutorials: Intro to back-end development

September 15, 12pm (M0): Project presentations due.
Proposed ideas are pitched in class and voted by other teams.


Wed, Sept 18, 2019

Groups: project pitches

September 20, 11:59pm: communities are formed.


Mon, Sept 23, 2019


M0 (refined): Meet and greet your community and TA. Finalize the scope of the project


Wed, Sept 25, 2019




Mon, Sept 30, 2019

Architecture, Design

M1: Requirements


Wed, Oct 2, 2019

REST, Microservices, Recap



Mon, Oct 7, 2019

Mid-term 1

M2: Design


Wed, Oct 9, 2019

Teamwork, Advanced Version Control



Mon, Oct 14, 2019

Thanksgiving Day


Wed, Oct 16, 2019

Continuous Integration, DevOps



Mon, Oct 21, 2019

Code Reviews, Anti-patterns



Wed, Oct 23, 2019

Verification and Validation, Analysis



Mon, Oct 28, 2019



Wed, Oct 30, 2019




Mon, Nov 4, 2019


M4: Code Review


Wed, Nov 6, 2019

Mid-term 2



Mon, Nov 11, 2019

Remembrance Day


Wed, Nov 13, 2019

Guest Lecture



Mon, Nov 18, 2019

Recap, Q/A, and preparation for final project presentation

M5: Testing + Customer acceptance test (both customer and development teams).


Wed, Nov 20, 2019

Guest Lecture - Technical Debt



Mon, Nov 25, 2019

Final project presentations in the lecture and lab times

M6: Final product + presentation


Wed, Nov 27, 2019

Top project presentations and awards


6. Grading

Grading for this course is based on three components:

7. Absence

8. Acknowledgements

We gratefully acknowledge the inspiration we drew and part of the material that we adapted from the previous editions of CPEN 321 and CPSC 310 (University of British Columbia), as well as from CSE 403 (University of Washington), CSC C01 (University of Toronto), CS 169 (UC Berkley), and CS428 (University of Illinois at Urbana-Champaign).

9. University Policies

UBC provides resources to support student learning and to maintain healthy lifestyles but recognizes that sometimes crises arise and so there are additional resources to access including those for survivors of sexual violence. UBC values respect for the person and ideas of all members of the academic community. Harassment and discrimination are not tolerated nor is suppression of academic freedom. UBC provides appropriate accommodation for students with disabilities and for religious, spiritual and cultural observances. UBC values academic honesty and students are expected to acknowledge the ideas generated by others and to uphold the highest academic standards in all of their actions. Details of the policies and how to access support are available here.