Welcome to CPSC 310!
Introduction to Software Engineering
UBC-CPSC 310 - 2024W2, 101, 102
Prerequisites: All of CPSC 213 and CPSC 221
ACCOMMODATIONS | PIAZZA | CLASSY | GITHUB | TEXTBOOK | SLIDES | LECTURE CODE
Introduction to Software Engineering
UBC-CPSC 310 - 2024W2, 101, 102
Prerequisites: All of CPSC 213 and CPSC 221
ACCOMMODATIONS | PIAZZA | CLASSY | GITHUB | TEXTBOOK | SLIDES | LECTURE CODE
Instructors: Katharine Kerr (kekerr@cs.ubc.ca) and Nick Bradley (ncbrad@cs.ubc.ca)
Course Admin: cpsc310-admin@cs.ubc.ca
Section 201: Nick Bradley. 0800-0930; SWNG Room 121.
Section 202: Katharine Kerr. 1530-1700; SWNG Room 222.
Lectures: 100% in person (no recordings).
Labs: Online (mandatory attendance Week 3 onwards).
OH: Mixture of online and in person.
Quizzes: In person in CBTF.
Final Exam: In person.
CPSC 310 will be a challenging course that we have designed to integrate many of the ideas and concepts from your prior courses in order to help you to learn how to apply them to engineering modern software systems. The official course learning outcomes for CPSC 310 are:
Evaluate software engineering processes used to build modern industrial-calibre systems by justifying their benefits and tradeoffs.
Elicit, deconstruct, and refine functional requirements and quality attributes such that they are described succinctly, completely, and precisely.
Devise and justify high- and low-level designs to support a given set of requirements and in support of future evolutionary needs.
Iteratively derive implementations of a design of reasonable complexity incorporating emergent design implications, and applying code-level restructuring for the sake of facilitating changes.
Carry out the implementation of a design incorporating ethical and security implications of code-level choices and software process and methodological approaches.
Independently acquire and apply modern and unfamiliar technology and language stacks.
Validate systems using both black-box and white-box approaches to reason about, and improve the quality of a software system.
Lecture topics are subject to change during the term, but assessment dates (quizzes, checkpoints, and journals) are fixed and cannot be extended due to the nature of the grading process. You can view the unembedded calendar here.
All lectures will take place in person. Lectures will not be recorded. You can attend lecture in any section, regardless of where you are registered.
Slides will be published/updated on Canvas before each lecture and will be linked from the schedule.
Project Questions: All TA office hours are posted on the schedule and are typically in person. Wait times can be long before deadlines. Please join the queue so we can help everyone fairly and efficiently. Any online office hours are held via zoom (link to join office hours)
Course Questions: Instructor office hours are in-person (see schedule) and will focus on course content.
Labs are online via zoom (link to join lab).
Week 1-2 (optional attendance): labs act as office hours.
Week 3-14 (mandatory attendance): weekly scrum with your mentor TA.
Each week after the C0 deadline during lab (weeks 3-13) you and your teammate will have a mandatory Scrum meeting with your assigned mentor TA. This will be a 15-20 minute individual check-in where you will discuss your journal responses and any questions your have related to the progress of your project.
NOTE: TAs will necessarily be reserved in their answers during the labs. While they will try to help you, they will not make your design decisions or write your code for you. Expect them to push for debugging or tests if you are encountering situations you do not understand.
The project has 4 checkpoint deadlines (C0, C1, C2, and C3) which are listed on the schedule. Instructions for the project are specified in the Project Overview. Each checkpoint contributes equally to your final project grade.
Checkpoint 0 is individual and Checkpoints 1-3 are done in teams of two. You must declare your partner in Classy by the end of your week 3 lab. Your partner must be in your lab and cannot be changed except in cases of academic misconduct or withdrawals. Please talk to your TA during your lab if you need a partner.
Note that AutoTest and TA office hour wait times increase dramatically as checkpoint deadlines approach so start working on checkpoints early!
If you copy any portion of the project (even part of a single checkpoint), you will receive 0 on the entire project, or your course grade will be capped at 50%. See the No Copying Policy page for details and licensing. Further, if you are not contributing equitably to the technical components of the project, we may decrease your grade to reflect your lower contribution.
The journals provide an incentivized learning opportunity and are designed to give you practice with key content from the course in a format different from the Close Ended (T/F, Multiple Choice) questions used for the quizzes and final. By completing the journals you will further ground your understanding of the content by relating it concretely to the project. We will provide detailed solutions and feedback to help you gain mastery of the course material. We encourage you to discuss your journals with your TA.
Journals will be assessed for completion. Completed journals will contribute bonus points to the project and quizzes. To ensure timely feedback, late or improperly submitted journals will not be accepted under any circumstances.
The final exam will be written in person on paper with the same style of questions and grading scheme as used in the quizzes. All material covered by the lectures, slides, and readings are examinable. No external notes or devices are permitted. You must take the final exam.
There are 4 quizzes (Q0--Q3) which are listed on the schedule. Quizzes are cumulative, contribute equally to your final grade, and are written in the CBTF (in person). Each quiz can test material from the course covered from the start of term to the Thursday prior to the quiz opening (e.g. if the quiz is in week 4, any course material from weeks 1-3 is relevent). Practice quizzes are available on Prairie Learn.
CBTF Information
Quizzes must be taken in-person in the Computer-Based Testing Facility (CBTF) located in ICCS 008 and 014. You must reserve a seat during one of the sessions listed on PrairieTest before arriving at the CBTF. Sessions will be available across multiple days. Reservations are first-come, first-served.
Please arrive at the CBTF approximately 10 min before your scheduled time, and bring your UBC ID card for check-in. When you arrive for your quiz, 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 check-in you will take your seat, log in to PT, and begin your quiz when the invigilator gives the signal. When you’re finished, just submit your quiz, collect your things, and leave the room!
Quizzes will not be returned but will be available for viewing in the CBTF at various points during the term and before the final exam.
Collaboration/communication with others (tutors, other students, anyone) is not allowed during the quizzes and while the quiz is open for other students. If detected, it will be considered academic misconduct.
No Posting of Quiz Content
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. If you have concerns about an answer to a quiz question, please use the 'issue' feature within PrairieLearn, either during your quiz or during a viewing, to report it. We evaluate each and every one of these very carefully and will respond accordingly if a change is needed. Please also feel free to come to instructor office hours to discuss any concerns you have about any quiz question, or if you just want to discuss the quiz!
Misconduct on any quiz will result in a score of 0 for all quizzes for all students involved.
Your final course grade will be based on your performance on the project and your knowledge of the course content as demonstrated on the journals, quizzes, and the final. Specifically:
finalGrade = ((projectGrade + bonus) * 25%) + (journal * 5%) + ((quizzes + bonus) * 30%) + (final * 40%)
To get the 5% journal grade, you must complete at least 5 journals. Each subsequent journal will contribute a 1% bonus to both your overall project grade and your quiz grade (to a maximum of 100% each).
In the unlikely event you achieve below 50% on the project (before bonuses), below 50% on the final exam, or you violate the Academic Misconduct Policy, your course grade is capped at 50%.
We will use Piazza to post announcements about the course (quiz reservation availability, project updates) and it is a great place to ask questions about the course content and project.
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.
Please do not contact the instructional staff about the waitlist. We do not have any information about it, and cannot tell you your position on it or the likelihood you will get into the class. Course staff cannot sign people into the class. Please contact the CS advisors if you require assistance.
Lab sections must be finalized by the add/drop date. Course staff cannot move students between lab sections. The Workday waitlist tool should move you into labs, if space becomes available. There is often considerable movement on the lab compositions on add/drop.
C0 cannot be waived. Regardless of when you are admitted to the course, C0 (which represents a significant portion of your grade) will be assessed before add/drop. If you are on the waitlist and plan on continuing in the course if you get added near add/drop, please make sure you start C0 on the first day as if you were already registered.
To ensure that students are making consistent progress and to provide timely feedback, we are unable to offer any extensions on deadlines. However, we will offer grade accommodations 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). Before requesting an accommodation (using the link at the top of the page), note that accommodations, if granted, are almost always to shift the weight of the missed assessment to the final exam. Feedback for missed journals may be provided but no points will be awarded.
Accommodation requests will only be accepted up to one week past the due date of that deliverable. For example, since C0 is due in week 2, a C0 accommodation request will only be considered if submitted by the end of week 3.
For anything related to the administration of the course, concerns, or accessibility-related accommodations, please contact the Course Coordinator at cpsc310-admin@cs.ubc.ca.
Journals: You are not allowed to use AI tools for journals; this is your opportunity to practice with and apply the course material.
Project: You are allowed to use AI tools for the project, but you must cite their use (using code comments) before and after any block of code that came from either an AI chat-based tool or an inline tool like CoPilot. These tools will not be available during the quizzes and final exam, and it is expected that you understand all code you incorporate into your project from these tools.
IMPORTANT: DO NOT CHEAT ON THE PROJECT. Do not copy code from others or the web. Do not share code. 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. As in a corporate environment, you are responsible for every line of code you commit to your repository. 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.
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."
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.