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 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.
CPEN 332 / CPEN 320 (Software Construction II).
Instructor | Lectures: Office hours: |
---|---|
TAs |
Masih Beigi Labs: |
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. More detailed scope specifications are provided in individual project milestones on Canvas.
Client side: a mobile application
Server side: Node.js backend
Implementation constraints: You should implement the major functionalities of your project using Kotlin for the front-end and Node.js for the back-end. Using third-party services, such as Firebase, AWS Amplify, Azure Functions and App Service, Azure Supabase, Parse Platform, and MongoDB Atlas/Realm, to implement major project functionality, e.g., database management, authentication, and critical application operations, is strictly forbidden. An exception to this rule is Firebase's push notification support, which is permitted. If you plan to use any third-part library or service not listed here to support a major functionality of your project, please check with the instructors beforehand, to make sure the use of the specific library is allowed and the functionality will be considered as part of your work.
Front-end and back-end tutorials: introduction videos for front-end and back-end development are available on Canvas.
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 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 (2 students for the front-end and 2 for the back-end).
The use of AI technology (such as ChatGPT and CoPilot) is allowed in this course, but all usages should be explicitly declared and documented. Students are ultimately accountable for the work they submit. Unreported and undocumented use is considered academic integrity violation and will be treated accordingly.
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. Specifically, the course aims at exposing students to the use of AI tools in software engineering processes, emphasizing the need to apply critical thinking skills when working with these tools.
As such, throughout the course, students will document and critically analyze their usage of AI technology, identifying its strengths and weaknesses. The analysis must be submitted as part of the assignment and will be graded.
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.
Note that this is a tentative week-by-week guide and thus is subject to change.
Date |
Topic |
Major deadlines |
|
W1 |
Mon, Jan 6, 2025 |
Intro, what is SE, Software Lifecycle |
|
|
Wed, Jan 8, 2025 |
Development Processes |
|
W2 |
Mon, Jan 13, 2025 |
UML |
|
|
Wed, Jan 15, 2025 |
Requirements |
Plan A and B - M1: Android App with Node.js Backend (individual, 12 pts) |
W3 |
Mon, Jan 20, 2025 |
Requirements |
|
|
Wed, Jan 22, 2025 |
Architecture, Design |
Plan A and B - M2: Groups, Project Idea, Plan Selection (group, 1 pt) |
W4 |
Mon, Jan 27, 2025 |
Design, REST, Microservices |
|
|
Wed, Jan 29, 2025 |
Design, recap, preparation for midterm 1 |
Plan A - M3: Requirements and Design + Project Presentation (group, 12 pts) Plan B - M3: Project Presentation (group, 1 pt) |
W5 |
Mon, Feb 3, 2025 |
Project presentations |
|
|
Wed, Feb 5, 2025 |
Project presentations |
|
W6 |
Mon, Feb 10, 2025 |
Midterm 1 |
|
|
Wed, Feb 12, 2025 |
Teamwork, Advanced Version Control |
|
W7 |
Mon, Feb 17, 2025 |
Midterm Break |
|
|
Wed, Feb 19, 2025 |
Midterm Break |
|
W8 |
Mon, Feb 24, 2025 |
Code Reviews, Anti-patterns |
|
|
Wed, Feb 26, 2025 |
MVP Clinic |
Plan A and B - M4: MVP (group, 12 pts) |
W9 |
Mon, Mar 3, 2025 |
Testing |
|
|
Wed, Mar 5, 2025 |
Testing |
|
W10 |
Mon, Mar 10, 2025 |
Verification and Validation, Analysis |
|
|
Wed, Mar 12, 2025 |
Verification and Validation, Analysis |
|
W11 |
Mon, Mar 17, 2025 |
Recap, preparation for midterm 2 |
|
|
Wed, Mar 19, 2025 |
Guest lecture |
Plan A - M5: Testing and Code Review (group, 12 pts) Due Wednesday, March 19, 11 pm |
W12 |
Mon, Mar 24, 2025 |
Midterm 2 |
|
|
Wed, Mar 26, 2025 |
Continuous Integration, DevOps |
|
W13 |
Mon, Mar 31, 2025 |
Free to work on Final Release |
|
|
Wed, Apr 2, 2025 |
Recap, final project deliverables and presentations guide |
Plan A - M6: Final Release (group, 12 pts) Plan B - M5: Final Release (group, 34 pts) Due Thursday, April 3, 11 am |
W14 |
Mon, Apr 7, 2025 |
Top project presentations and awards ceremony |
|
The timeline of the course milestones and midterms is as follows:
Grading for this course is based on six components:
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:
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.
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.
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/
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
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.