CPEN 321: Software Engineering (Summer 2022)

Contents

  1. Overview
  2. Staff
  3. Communication and Links
  4. Project
  5. Course Schedule
  6. Grading
  7. Absence
  8. Acknowledgements
  9. Academic Integrity
  10. 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

CPEN 221, CPSC 210, or equivalent.

2. Staff

Instructor

Prof. Julia Rubin

Lectures:
Mon. 5-6:30pm, Zoom
Wed. 5-6:30pm, Zoom

Office hours:
Thu. 5:30-6:30pm, Zoom (or by appointment)

TAs

Khaled Ahmed
Faridah Akinotcho
Michael Tegegn
Yingying Wang

Labs:
Tue. 5-7pm, Discord

3. Communication and Important Links

Notes

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

Scope: You are required to develop a client-server software system with the client (front-end) running on a mobile device and the back-end running on the cloud. Several examples of reasonably-scoped projects can be found here.

Client side: a mobile application

Server side: Node.js backend

Code Management: All development artifacts must be stored in Git - a popular version control system.

Milestones and Deliverables

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

Late Deliverables

5. Course Schedule

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

 

Date

Topic

Major Deadlines
(by Thursday of that week, 11pm PST, unless stated otherwise)

W1

Mon, May 16, 2022

Introductions, Goals, and Logistics

 

 

Wed, May 18, 2022

Software Lifecycle, Development Processes

 

W2

Mon, May 23, 2022

Victoria Day

 

 

Wed, May 25, 2022

UML

M1: Android App (individual, 5%)

W3

Mon, May 30, 2022

Requirements

 

 

Wed, June 1, 2022

Requirements

M2: Android App with Node.js Backend
(individual, 8%)

W4

Mon, June 6, 2022

Architecture, Design

Groups formed and submitted on Canvas -
by Monday June 6, 11pm

 

Wed, June 8, 2022

REST, Microservices

M3: Requirements (group, 5%)

W5

Mon, June 13, 2022

Project presentations

 

 

Wed, June 15, 2022

Project presentations

 

W6

Mon, June 20, 2022

Teamwork, Advanced Version Control

M4: Design (group, 5%) -
by Monday June 20, 11pm

 

Wed, June 22, 2022

Code Reviews, Anti-patterns

 

W7

Mon, June 27, 2022

Exam Break


 

Wed, June 29, 2022

Exam Break

 

W8

Mon, July 4, 2022

Testing


 

Wed, July 6, 2022

Testing

M5: MVP (group, 12%)

W9

Mon, July 11, 2022

Verification and Validation, Analysis

 

 

Wed, July 13, 2022

Verification and Validation, Analysis

M6: Test design and setup (group, 5%)

W10

Mon, July 18, 2022

Preparation for mid-term

 

 

Wed, July 20, 2022

Preparation for mid-term

M7: Code review (group, 5%)

W11

Mon, July 25, 2022

Mid-term

 

 

Wed, July 27, 2022

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

M8: Testing (group, 5%)

W12

Mon, Aug 1, 2022

BC Day

 

 

Wed, Aug 3, 2022

Continuous Integration, DevOps

M9: Final release (group, 15%)

W13

Mon, Aug 8, 2022

Open to topics of interest or guest lecture

 

 

Wed, Aug 10, 2022

Top project presentations and awards

 

6. Grading

Grading for this course is based on four components:

7. Absence

Attending lectures, labs, and the mid-term exam is mandatory. In special circumstances, you should submit a request for academic concession here.

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

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