Welcome to CPSC 310!
Introduction to Software Engineering
UBC-CPSC 310 - 2024W1, 101, 102, 103
Prerequisites: All of CPSC 213 and CPSC 221
ACCOMMODATIONS | PIAZZA | CLASSY | GITHUB | LABS | OFFICE HOURS | IMPORTANT DATES | COURSE READER | SLIDES
Introduction to Software Engineering
UBC-CPSC 310 - 2024W1, 101, 102, 103
Prerequisites: All of CPSC 213 and CPSC 221
ACCOMMODATIONS | PIAZZA | CLASSY | GITHUB | LABS | OFFICE HOURS | IMPORTANT DATES | COURSE READER | SLIDES
Instructors: Nick Bradley (ncbrad@cs.ubc.ca) and Reid Holmes (rtholmes@cs.ubc.ca)
Course Admin: cpsc310-admin@cs.ubc.ca
Section 101: Reid Holmes. 0800-0930; SWNG 121.
Section 102: Nick Bradley. 1400-1530; SWNG 122 .
Section 103: Nick Bradley. 1230-1400; SWNG 121.
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. Fri Dec. 13 @ 1900.
With the transition to Workday, course staff have lost the ability to manage the lecture and lab waitlists. This means that you could be added to the course up until the add/drop deadline. Please note: CPSC 310 is a time-intensive four credit course. The first deliverable (C0) has been carefully designed to provide you an accurate introduction to the workload of this four credit course, and to help you gague your potential performance on the project. If you are added to the course late and do not have time to do C0, please carefully consider whether this is the right term for you to take this class: it runs every year, if you got a seat this term you will surely get a seat in a future term as well. The C0 component cannot be waived.
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 (CLOs) 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.
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 can be found on the Schedule Page. Slides will be published before each course module, but will not be updated after class.
The schedule is on the Schedule Page; project, quiz, and journal deadlines are fixed and will not change, but the lecture schedule will adapt as the term progresses.
The schedule is on the Labs page and the zoom links will be available on the first day of class. Labs are online via zoom.
Week 2 (optional attendance): labs act as office hours.
Week 3-14 (mandatory attendance): weekly scrum with your mentor TA.
If you can't get into the lab you want, please use the Workday waitlists. Course staff do not have any influence over registration.
The schedule will be released on the first day of class.
Project Questions: All TA office hours will be in person, except if a TA chooses to hold them online. We use a queue system to process students fairly. Wait times can be long before deadlines, so plan accordingly.
Course Questions: Instructor office hours will be in person. These office hours will focus on course content, not the project.
Your final course grade will be based on your performance on the project (30%) and knowledge of the learning areas (70%). Specifically:
finalGrade = projectGrade * 0.3 + learningAreaGrade * 0.7
In the unlikely event you achieve below 50% on the project, below 50% on any three learning areas, or you violate the Academic Misconduct Policy, your course grade is capped at 50%.
Project Deadlines are on the Schedule Page. The project has 4 checkpoint deadlines (C0, C1, C2, and C3).
The Project Page contains important details about the project and the Project Grading Page outlines how the project grade is calculated.
Checkpoint 0 is individual and Checkpoints 1-3 are done in teams of two. Your partner 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.
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.
All quiz, project journal, and final exam knowledge will be assessed using the course learning areas. These are described in detail on the learning area page.
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 (25% of the project 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.
The project has some hard deadlines: Checkpoint 0 at the drop date, and the Checkpoint 1-3 deadlines during the semester. We will not be offering extensions on these deadlines for any reason, because of the way our grading works. But 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). Fill out the accommodation form in the page header. 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 within one week of the deadline.
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.
AI tools are fully allowed in 310, 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." 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.