CPEN 321: Software Engineering (Winter 2023)

Contents

  1. Overview
  2. Staff
  3. Communication and Links
  4. Project
  5. Use of ChatGPT (3.5)
  6. Course Schedule
  7. Grading
  8. Absence
  9. Academic Integrity
  10. APSC and UBC-wide 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.

Course Corequisites

CPEN 332.

2. Staff

Instructor

Prof. Julia Rubin

Lectures:
Mon. and Wed. 3:30-5pm, MacMillan 360

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

TAs

Sahar Badihi
Faridah Akinotcho
Michael Tegegn
Yunhao Tian
Yingying Wang

Labs:
Wed. 1-3pm, MacLeod 3018, 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 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 GitHub - a popular platform and cloud-based service for software development and version control using Git.

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

5. Use of ChatGPT (3.5)

The use of ChatGPT in this course is allowed, but all usages should be explicitly declared and documented. Moreover, one of the educational objectives of this course is to expose students to the use of AI tools in software engineering processes and teach the students the need to apply their critical thinking skills when working with these tools.

As such, throughout the course, students will systematically use ChatGPT as an assistant in completing their assignments, such as preparing requirements and design, and also some coding and testing tasks. The students will document and critically analyze the results, identifying strengths and weaknesses of the AI technologies. The analysis must be submitted as part of the assignment and will be graded.

The teaching approach responds to a dramatic shift in the software industry, where AI tools are starting to be introduced to automate knowledge worker tasks. Understanding how to best use AI agents and identifying their limitations is thus an important educational objective of the course.

After the course is completed, the instructors might 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, will follow.

6. Course Schedule

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

 

Date

Topic

Major deadlines

W1

Wed, Sept 6, 2023

Intro, what is SE

 

W2

Mon, Sept 11, 2023

Software Lifecycle,
Development Processes

 

 

Wed, Sept 13, 2023

UML

 

W3

Mon, Sept 18, 2023

Requirements

M1: Android App with Node.js Backend (individual, 12%) -
Monday, Sept 18, 9pm

Sept 18: Last day to withdraw without a W standing

 

Wed, Sept 20, 2023

Requirements

Groups and project presentations - Friday Sept 22, 9pm

W4

Mon, Sept 25, 2023

Project presentations


 

Wed, Sept 27, 2023

Project presentations

Communities are formed - Friday Sep 29, 9pm

W5

Mon, Oct 2, 2023

Reconciliation Day

M2: Requirements (group, 5%) - Tuesday, Oct 3, 12pm (noon)

 

Wed, Oct 4, 2023

Architecture, Design

 

W6

Mon, Oct 9, 2023

Thanksgiving Day

 

 

Wed, Oct 11, 2023

Design, REST, Microservices

 

 

Thu, Oct 12, 2023

Free for working on design

M3: Design (group, 7%) - Monday, Oct 16, 12pm

W7

Mon, Oct 16, 2023

Recap, preparation for mid-term 1

 

 

Wed, Oct 18, 2023

Mid-term 1

 

W8

Mon, Oct 23, 2023

Teamwork,
Advanced Version Control

 

 

Wed, Oct 25, 2023

Code Reviews, Anti-patterns

M4: MVP (group, 12%) - Friday Oct 27, 9pm

W9

Mon, Oct 30, 2023

Testing

 

 

Wed, Nov 1, 2023

Testing

Oct 31: last day to withdraw

W10

Mon, Nov 6, 2023

Verification and Validation, Analysis

M5: Code review (group, 5%) - Monday, Nov 6, 9pm

 

Wed, Nov 8, 2023

Verification and Validation, Analysis

 

W11

Mon, Nov 13, 2022

Reading week

 

 

Mon, Nov 15, 2022

Reading week

 

W12

Mon, Nov 20, 2023

Recap, preparation for mid-term 2

M6: Testing (group, 7%) - Monday, Nov 20, 9pm

 

Wed, Nov 22, 2023

Mid-term 2

 

W13

Mon, Nov 27, 2023

Continuous Integration, DevOps

 

 

Wed, Nov 29, 2023

Recap, Q/A, preparation for the final project presentations

M7: Final release (group, 12%) - Thursday, Nov 30, 9pm

W14

Mon, Dec 4, 2023

Top project presentations and awards ceremony

 

 

Wed, Dec 6, 2023

Reflections

 

7. Grading

Grading for this course is based on four components:

Project 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:

8. Absence

Attending lectures, labs, and the mid-term exams is mandatory and is graded.

Late Deliverables for Milestones

In exceptional circumstances, if you need to make up for a missed grade, you should submit a request for APSC's academic concession here.

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