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.
By the end of the course, students will learn several fundamental skills in modern software development:
CPEN 221, CPSC 210, or equivalent.
Instructor |
Lectures:
Office hours: |
---|---|
TAs | Khaled Ahmed Labs: |
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.
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.
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.
Note that this is a tentative week-by-week guide and thus is subject to change.
Date |
Topic |
Major Deadlines |
|
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 |
W4 |
Mon, June 6, 2022 |
Architecture, Design |
Groups formed and submitted on Canvas - |
|
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%) - |
|
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 |
|
Grading for this course is based on four components:
Attending lectures, labs, and the mid-term exam is mandatory. In special circumstances, you should submit a request for academic concession here.
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).
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.
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.