CPEN 321: Software Engineering (Fall 2020 )


  1. Overview
  2. Staff
  3. Communication and Links
  4. Project
  5. Course Schedule
  6. Grading
  7. Absence
  8. Acknowledgments
  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 development 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, Zoom
Wed. 5-6:30pm, Zoom

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


Sahar Badihi, Michael Cao, Jackson Xie,
Faridah Akinotcho, Yingying Wang

Mon. 10am-12pm, Zoom
Tue. 3-5pm, Zoom
Wed. 10am-12pm, Zoom

Office Hours:
Fri. 12-1pm (or by appointment), Zoom

3. Communication and Important Links

Support Resources

Time Zone in Canvas

The course is set to Pacific Time (PT) time zone, where the University of British Columbia Vancouver Campus is located. All due dates are set to PT. Canvas will not automatically change time zones for you. If you want Canvas to display dates in your local time zone, you can go into your settings and adjust to your personal local time zone. Please refer to Canvas guide on how to set a time zone in your user account.

4. Project

A major part of the course is the development 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 Deliverables

The milestone submission schedule is outlined in the Course Schedule table below. The detailed specification for each milestone deliverable is attached in Canvas.

Late deliverables will be subject to the following penalties:

5. Course Schedule

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




Major deadlines


Wed, Sept 9, 2020

Intro, what is SE



Mon, Sept 14, 2020

Software Lifecycle, Development Processes

Tutorials: Mobile



Wed, Sept 16, 2020




Mon, Sept 21, 2020


Tutorials: Backend

M1: Project ideas (individual, 3%),
by Monday, September 21, 12pm PST

Sept 21: Last day to withdraw without a W standing


Wed, Sept 23, 2020


M2: Project pitches (individual, 5%),
by Friday, September 25, 12pm PST


Mon, Sept 28, 2020

Architecture, Design

M3: Requirements (individual, 5%),
by Monday, September 28, 12pm PST


Wed, Sept 30, 2020

Vote on project pitches (asynchronous)



Mon, Oct 5, 2020

Vote on project pitches (asynchronous)

M4: Design (individual, 5%),
by Monday, October 5, 12pm PST


Wed, Oct 7, 2020

REST, Microservices

Groups are formed by Wednesday, October 7, 12pm PST

  • Out of their four projects, each group picks one which they will implement.
  • Group members register on Canvas (one registration per group).

Communities are formed by Friday, October 9, 12pm PST

  • Communities, (possibly updated) project requirements and design documents, and preferred meeting times are registered on Canvas (one registration per community).


Mon, Oct 12, 2020

Thanksgiving Day

M5: App Setup (individual, 5%),
by Tuesday, October 13, 12pm PST Communities meet their TA.


Wed, Oct 14, 2020

Advanced Version Control



Mon, Oct 19, 2020

Q/A session



Wed, Oct 21, 2020

Code Reviews, Anti-patterns



Mon, Oct 26, 2020


M6: MVP (development team, 10%),
by 12pm on the day before the group meeting.


Wed, Oct 28, 2020


Oct 30: last day to withdraw


Mon, Nov 2, 2020

Verification and Validation, Analysis

M7: Test setup (development team, 5%),
by 12pm on the day before the group meeting.


Wed, Nov 4, 2020

Verification and Validation, Analysis



Mon, Nov 9, 2020

Continuous Integration, DevOps

preparation for mid-term

M8: Code review (both customer and development teams, 5%),
by 12pm on the day before the group meeting.


Wed, Nov 11, 2020

Remembrance Day



Mon, Nov 16, 2020

Guest Lecture

M9: Testing + Customer acceptance test (both customer and development teams, 5%),
by 12pm on the day before the group meeting.


Wed, Nov 18, 2020




Mon, Nov 23, 2020

Open to the topic of interest



Wed, Nov 25, 2020

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



Mon, Nov 30, 2020

Final project presentations in the lecture and lab times

M10: Final project presentations (development team, 12%),
in class on Monday and during lab hours


Wed, Dec 2, 2020

Top project presentations and awards



6. Grading

Grading for this course is based on four components:

7. Absence

8. Acknowledgments

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 CS 428 (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.

During this pandemic, the shift to online learning has greatly altered teaching and studying at UBC, including changes to health and safety considerations. Keep in mind that some UBC courses might cover topics that are censored or considered illegal by non-Canadian governments. This may include, but is not limited to, human rights, representative government, defamation, obscenity, gender or sexuality, and historical or current geopolitical controversies. If you are a student living abroad, you will be subject to the laws of your local jurisdiction, and your local authorities might limit your access to course material or take punitive action against you. UBC is strongly committed to academic freedom, but has no control over foreign authorities (please visit calendar.ubc.ca/vancouver/index.cfm?tree=3,33,86,0 for an articulation of the values of the University conveyed in the Senate Statement on Academic Freedom). Thus, we recognize that students will have legitimate reason to exercise caution in studying certain subjects. If you have concerns regarding your personal situation, consider postponing taking a course with manifest risks, until you are back on campus or reach out to your academic advisor to find substitute courses. For further information and support, please visit academic.ubc.ca/support-resources/freedom-expression.