CPEN 321: Software Engineering (Winter 2025)

Contents

  1. Overview
  2. Staff
  3. Communication and Links
  4. Project
  5. Use of AI Technology
  6. Topics and Schedule
  7. Grading
  8. Academic Integrity
  9. APSC and UBC-wide Policies

1. Overview

The course explores engineering principles for building non-trivial software-intensive systems: requirements 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 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

CPEN 221, CPSC 210, or equivalent.

Course Corequisites

CPEN 322 / CPEN 320 (Software Construction II).

2. Staff

Instructor

Prof. Julia Rubin

Lectures:
Mon. 4:30-6pm, FORW 303
Wed. 4:30-6pm, FORW 303

Office hours:
Mon. 6-7pm, KAIS 4053 (or by appointment)

TAs

Masih Beigi, Fatemeh Khashei, Yingying Wang

Labs:
Wed. 1-3pm, MacLeod 4002 + 4006

3. Communication and Important Links

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.

Scope: You are required to develop a client-server software system with the client (front-end) running on a mobile device and the server (back-end) running in the cloud. Several examples of reasonably-scoped projects can be found here. More detailed scope specifications are provided in individual project milestones on Canvas.

Front-end: an Android/Kotlin mobile application

Back-end: a Node.js/TypeScript server

Using third-party libraries, services, and frameworks:

Code review and testing tools:

The following tools will be used for automated code review and testing of your projects. While you are not required to use these tools prior to M4, it is a good idea to explore how to integrate them into your development pipeline early on, e.g., the automated code review tool, so you write clean code from the start.

  1. Codacy (https://www.codacy.com/) – an automated code review tool.
    • Specific instructions on how to configure the tool for Kotlin and TypeScript checks will be available in M4.
  2. Jest (https://jestjs.io) – a testing framework for TypeScript.
  3. Jetpack Compose Testing APIs (https://developer.android.com/develop/ui/compose/testing) – a testing framework for Android Compose screens and components.
  4. UI Automator (https://developer.android.com/training/testing/other-components/ui-automator) – a testing framework for Android cross-app functional UI (to perform operations such as opening the Settings menu or the app launcher on a test device).
  5. GitHub Actions (https://docs.github.com/en/actions) – an automated continuous integration pipeline.

Front-end and back-end tutorials: Introduction videos for front-end and back-end development are available on Canvas.

Code Management:

Milestones and Deliverables: The course project has multiple milestones, which are described in the Grading section. The detailed specification for each milestone deliverable is attached to the Canvas assignment. The milestone submission schedule is also outlined in the Course Schedule table.

Project Groups: Besides the first milestone, the project is implemented in groups of 4 students.

5. Use of AI Technology

In recent years, Generative AI (GenAI), the latest advancement in artificial intelligence, has transformed many aspects of our lives, including Software Engineering. As the efficient and responsible use of GenAI has de facto become a business necessity, exploring how to use these tools effectively, understanding their strengths and limitations, learning strategies for overcoming limitations, and identifying skills necessary for future software engineers are important educational objectives of this course.

To achieve these educational objectives, the use of GenAI tools (such as chat systems, IDE-embedded agents, and CLI tools) is permitted (but not required) in the scope of this course. Use of AI tools is optional and students may decide not to use them. However, if a student chooses to use AI, all usages must be explicitly declared and thoroughly documented. Unreported and undocumented use is considered an academic integrity violation and will be treated accordingly.  

Accountability. Students are ultimately accountable for the work they submit. Responsibility cannot be delegated to AI tools and errors cannot be attributed to them.

Required Reporting When Using GenAI Tools. For any course assignment where GenAI tools are used, students must submit the following materials on Canvas:

  1. PDFs of all GenAI conversations conducted by each student (individually or as part of the group).
  2. A description of the workflow each student followed when interacting with GenAI tools (which tools, which tasks, for what purposes, how often, etc.)
  3. A critical analysis of strengths and weaknesses of GenAI for each task.

This reporting must be included with each milestone submission and will be graded.

Tool Selection. When choosing tools, ensure that your interactions (chats, logs of agent activity, etc.) can be easily exported to PDF for submission on Canvas. Based on current experience:

Future of SE education. In an effort to better understand and further improve Software Engineering education in the age of AI, after the course is completed, instructors might contact you to follow up on your experience and perspectives. They might also document the experience in a report, which should be of interest to software developers and educators. More communication on this, including the means that will be taken to protect student privacy and ways to opt out, will follow.

Privacy and information security when using GenAI tools. Please be aware that most, if not all, existing GenAI tools require subscription and collect certain personal information, which is not stored in Canada. Please refer to UBC resources for further information on this topic: 

https://privacymatters.ubc.ca/sites/default/files/PIA%20Guidelines%20for%20Third-Party%20Hosted%20Generative%20AI%20Tools.pdf

https://ai.ctlt.ubc.ca/privacy-impact-assessments-for-generativeai-instructional-use-at-ubc/

6. Topics and Schedule

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

 

 Date

 Topic

 Major deadlines
 (Friday, 11pm, unless stated otherwise)

 W1

Wed, Sept 3, 2025

Intro, SE in the Era of AI, Software Lifecycle

 

W2

Mon, Sept 8, 2025

Development Processes

 
 

Wed, Sept 10, 2025

UML

M1 - App Deployment and Improvements: individual

W3

Mon, Sept 15, 2025

Requirements

Assignment: group formation

Due Tuesday, Sept 16, 3 pm

 

Wed, Sept 17, 2025

Requirements

 

W4

Mon, Sept 22, 2025

Architecture, Design

 
 

Wed, Sept 24, 2025

Design, REST, Microservices

M2 - Project Idea, Requirements, High-level Design, Project Presentation: group/p>

 W5

Mon, Sept 29, 2025

Project presentations

 
 

Wed, Oct 1, 2025

Project presentations

 

 W6

Mon, Oct 6, 2025

Recap, preparation for midterm 1

 
 

Wed, Oct 8, 2025

Midterm 1

 

W7

Mon, Oct 13, 2025

Thanksgiving Day

 
 

Wed, Oct 15, 2025

Teamwork, Advanced Version Control

 

W8

Mon, Oct 20, 2025

Code Reviews, Anti-patterns

 
 

Wed, Oct 22, 2025

Testing

M3 - (Requirements), Design, MVP: group

W9

Mon, Oct 27, 2025

Testing

 
 

Wed, Oct 29, 2025

Verification and Validation, Analysis

 

W10

Mon, Nov 3, 2025

Verification and Validation, Analysis

 
 

Wed, Nov 5, 2025

Recap, preparation for midterm 2

M4 - (Requirements, Design, Implementation), Code Review, Testing: group

 W11

Mon, Nov 10, 2025

Midterm break

 

 

Wed, Nov 12, 2025

Midterm break

 

 W12

Mon, Nov 17, 2025 

Midterm 2

 
 

Wed, Nov 19, 2025 

Free to work on Final Release (no class)

 

 W13

Mon, Nov 24, 2025

Continuous Integration, DevOps, MLOps, Vibe Software Engineering

 
 

Wed, Nov 26, 2025

Recap, Q/A, preparation for final project presentation

M5 - Final Release: + the chance to recover 50% of lost marks for each course component: group

W14

Mon, Dec 1, 2025

Open to topics of interest / Guest Speaker

 
 

Wed, Dec 3, 2025

Top project presentations and awards ceremony

 

 

The timeline of the course milestones and midterms is as follows:

CPEN321-W25T1-timeline.png

7. Grading

Grading for this course is based on six components:

* The grade of each group milestone is multiplied by iPeer assessment

Grade Appeals

You can appeal your milestone grade by submitting a private post on Piazza (to all instructors), with the subject “<Mx> grade appeal”, where Mx can be one of the milestones, e.g., M1.

Appeals can be submitted within 5 days after the milestone grades are posted and should include:

Notes:

Late Deliverables

In exceptional circumstances, to make up for a missed grade, you must submit a request for APSC's academic concession here and provide all the necessary documentation. Requests not submitted through this mechanism will not be considered.

8. Academic Integrity

The academic enterprise is founded on honesty, civility, and integrity. As members of this enterprise, all students are expected to know, understand, and follow the codes of conduct regarding academic integrity. At the most basic level, this means submitting only original work done by you and acknowledging all sources of information or ideas and attributing them to others as required. This also means you should not cheat, copy, or mislead others about what is your work. Violations of academic integrity (i.e., misconduct) lead to the breakdown of the academic enterprise, and therefore serious consequences arise and harsh sanctions are imposed. For example, incidences of plagiarism or cheating may result in a mark of zero on the assignment or exam and more serious consequences may apply if the matter is referred to the President’s Advisory Committee on Student Discipline. Careful records are kept in order to monitor and prevent recurrences.

For more information, see here.

9. APSC and UBC-wide Policies

Academic Concession

The University is committed to supporting students in their academic pursuits. Students may request academic concession in circumstances that may adversely affect their attendance or performance in a course or program. Students who intend to, or who as a result of circumstance must, request academic concession must notify their instructor, dean, or director as specified in the link below.
https://www.calendar.ubc.ca/vancouver/index.cfm?tree=3,329,0,0

Students seeking academic concession due to absence from the final exam for any reason must apply to Engineering Academic Services (EAS) within 72 hours of the missed exam. This is a standard practice for all final examinations at UBC. For more information, see: https://academicservices.engineering.ubc.ca/exams-grades/academic-concession/

Health and Wellness

UBC provides resources to support student learning and to maintain healthy lifestyles, while recognizing that challenges and crises can arise for students. There are resources in ECE and at UBC where students can find help and support, including wellness, equity, inclusion and indigeneity, resources for survivors of sexual violence, and health. Some frequently used resources are as follows:

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 UBC’s respectful environment policies, which all students, staff and faculty are expected to follow, can be found here: https://hr.ubc.ca/working-ubc/respectful-environment

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.