Welcome to CPSC 310!

Introduction to Software Engineering | UBC-CPSC 310 - 2022 W T1, 101, 102


Instructor: Ivan Beschastnikh, Reid Holmes

Labs and TA Office Hours: Labs and Office Hours page

Lectures: All on Zoom

Deadlines, Resources, Recordings: Schedule page


It takes a lot of time to get set up and started. It is due on the add/drop date.

Waitlist update (Sept 6) - We have been told that the course will be overenrolled by the first lecture and the waitlists will be cleared at that time. Unfortunately, if you are not registered in the course by September 8, you will be unable to take the course this term.

Please don't contact the instructional staff about the waitlist - we don't have any information about it, and can't tell you your position on it or the likelihood you'll get into the class. We can't sign people into the class. Please contact CS advisors. More waitlist instructions are available here.

This is another weird semester! It's anticipated that people will be off sick for some of it. Also other life things come up. Also sometimes the stress is too much and you need a break. Here's what we're doing:

  • Quizzes will be taken in person in the CBTF (details below).

  • We will offer grade accommodations (not extensions) for the project to those who have suffered absences or for those who are experiencing longer running situations that are severely impacting their ability to do work (such as caring for unwell dependents). Absence Form Here

  • The ClientBot will provide sanitiy checking feedback on each branch commit, smoke test feedback on each merge-to-main, and full feedback on each checkpoint at the deadline.

  • If you're needing support because of personal reasons (like personal tragedy or crisis) please get in touch. We have more we can do for students in really difficult situations.

There's more information on each of the above in the sections below....

About Lectures

These are attended virtually over Zoom and will be recorded. You can attend whichever lecture is best for you. Experience shows attending lectures as they happens is more successful than binging them at the end of the term. Lecture videos will be distributed, but slides will not.

If a class has to be cancelled because the instructor is unable to come to class, the topic will be moved to the subsequent day. If this happens such that there is a squeeze, topics may be shortened and additional resources made available to preserve learning outcomes.

Entire semester schedule is on the Schedule page.

We have reserved a room for each section from where students can attend the lecture via zoom. For section 101, this is ORCH 3074. For section 102, this is FNH 50.

About LABS

Labs and office hours are all online. The schedule is here. During the first week of the term, labs function as drop-in office hours.

After the Checkpoint 0 deadline labs are mandatory. You must attend a weekly Scrum with your mentor TA. If you are absent please contact Emily at cpsc310-admin@cs.ubc.ca.

If you can't get into the lab you want, please just watch SSC for availability. We can't help with lab registration.

About Office hours

All TA/Project office hours are online and there is a queue system to process students fairly. Wait times can be long before deadlines, so plan accordingly.
Instructor office hours will be online or in person. These office hours will focus on course content, not the project.


There will be 5 quizzes, but we only count your top 4. Quizzes will cover all lecture material prior to the end of the Thursday before the quiz opens. Practice quizzes will not be available.

Quiz availability dates are on the Schedule page. Quizzes will be taken in person in new, special-purpose labs (ICCS 008 and 014) referred to as the Computer-Based Testing Facility (CBTF). You will self-schedule your quiz time by making a reservation in one of the sessions listed at ca.prairietest.com (PT). We will announce in advance when the PT reservation system is available for each quiz.

CBTF sessions typically occur on Wed, Thu, Fri, and Sat, and seats are first-come, first-served for all times. Please arrive at the CBTF approximately 10 min before your scheduled time, and bring your UBC ID card for checkin.

The CBTF is a secure, invigilated, testing site consisting of two neighboring rooms in the basement of ICCS. When you arrive for your exam, you will be asked to place all of your personal belongings including all electronics (watches, phones, ear buds, etc.) on the shelves at the front of the room. After checkin you will take your seat, log in to PT, and begin your exam when the invigilator gives the signal. When you’re finished, just submit your exam, collect your things, and leave the room!

Collaboration/communication with others (tutors, other students, anyone) is not allowed during the quizzes and while the quiz is open for other students to write, and will be considered academic misconduct if detected.

Because we are allowing flexible quiz-taking, you are not allowed to post any content or question about any quiz to any forum (Piazza, reddit) or to communicate with any other student about a quiz. Any such communication is considered academic misconduct and will be treated seriously.

Misconduct on any quiz will result in a score of 0 for all quizzes for all students involved; quiz weight cannot be transferred to the final in these cases.

About the Project

The project has 4 checkpoints (C0..C3).

All project deadlines are on the Schedule page.

See the Project page for more details! The project is entirely about having a development-based experiential learning experience. No interm solutions will be posted, the value of the project is in ideating and evaluating your own strategies for systematically tackling larger-scale development challenges.

You will need a partner for Checkpoints 1-3, and that person must be in your lab. Teams are declared the week after the add/drop date. If you don't have a teammate at that time we will assign you to a team.

All checkpoints have set deadlines. These are given on the schedule page. AutoTest will provide full feedback (and a grade) for the most recent commit on the main branch at the deadline. Smoke tests will be run on all merges-to-main prior to the deadline. Sanity tests will be automatically run on your personal branches. You should be checking your own progress using your own tests, and using our AutoTest Smoke tests.

You may NOT use a tutor to help you with the project content. You may not look for project-specific help online. This will be considered academic misconduct.

You must also submit a weekly progress/work report individually.

Questions: Piazza

It is highly recommended that you sign up with your cs email (the r2d2 email address you are given) so that we can identify you in case we need to be in touch over Piazza.

Piazza is intended to be your mechanism to communicate with the teaching team.

There are no private posts available. To individually contact a TA you must attend lab or office hours.

If you can't get into Piazza, contact cpsc310-admin@cs.ubc.ca.

Chatting: Discord

You are encouraged to use Discord to hang out like you would in the DLC. You can not post code, or dictate code, or in any way help someone remotely to *do* their project, because that would violate the no copying policy, but you can discuss project approaches there! You can chat about potential algorithms (without posting pseudocode), and strategies.

We suggest making a new Discord user ID if you don't want us to see you playing Genshin Impact on your main when we both know you've not done C0.

Absences: Form

The project has some hard deadlines: Checkpoint 0 at the drop date, and the Checkpoint 3 deadlines during semester. We won't be offering extensions on these deadlines for any reason, because of the way our grading works. But we will offer grade accommodations for the project to those who have suffered absences or for those who are experiencing conditions that are severely hurting their ability to do work (such as having kids home from school, caring for another person because they are unwell, etc). FILL OUT THIS FORM. You don't need to provide proof - just provide an explanation so we can assess the accommodation that's right for you. Forms must be submitted by December 9 @ 1800.

Accommodations: Course Coordinator

Please inform Emily at cpsc310-admin@cs.ubc.ca of all accommodations from the Centre for Accessibility.

Admin Issues: Course Coordinator

For anything else related to the administration of the course, please contact Emily at cpsc310-admin@cs.ubc.ca.


IMPORTANT: DO NOT CHEAT ON THE PROJECT. Do not copy code from others or the web. Do not share code. Do not use CoPilot or any other code generation service. Do not look at old projects if you happen upon them while searching the web, and do not look at project code belonging to students in the class currently. Concrete details are given here. Make sure every line of code you commit is either provided by us, or originated (conceived of and written) by you (or your partner). Tutors can not help you do your project work. You must do all your own work. Cases will be referred to the dean and students have received 0 in the course, and been suspended for copying in past terms.

Respectful Environment:

Everyone involved with CPSC 310 is responsible for understanding and abiding by UBC's Respectful Environment Statement.

The Statement of Principle of UBC's Respectful Environment Statement is "The best possible environment for working, learning and living is one in which respect, civility, diversity, opportunity and inclusion are valued. Everyone at the University of British Columbia is expected to conduct themselves in a manner that upholds these principles in all communications and interactions with fellow UBC community members and the public in all University-related settings." More details can be found on the department's resource page.


The readings and pre-recorded videos for this course are licensed using CC-by-SA. However, it is important to note that the lecture videos, slides, deliverable descriptions, code implementing the deliverables, exams, and exam solutions are considered private materials. We go to considerable lengths to make the project an interesting and useful learning experience for this course. This is a great deal of work, and while future students may be tempted by your solutions, posting them does not do them any real favours. Please be considerate with these private materials and not pass them along to others, do not make your repos public or post them to other sites online.