Appearance
CPSC 310: Introduction to Software Engineering
Welcome to the main course website where you can find the everything you need to know about the course.
📌 Quick Links
- Read the Course Syllabus, which lists course policies, expectations, and grading scheme.
- Join Piazza for questions and announcements.
- GitHub Enterprise to access your term project repo using your CWL account (you must be connected to the VPN).
- Canvas for grades.
- PrairieLearn to work on lab assignments, and submit project questions.
- Join your section's iClicker (101, 102, 103) to respond to in-class polls.
🗓️ Semester Roadmap
The course moves outward: from design decisions inside a single class, to the boundaries between modules, to the systems and processes that hold a codebase together over time. Every unit answers the same question at a wider radius: what does it cost to change this, and why?
| Unit | Weeks |
|---|---|
| Unit 1: Design in the small | 1–5 |
| Unit 2: Layers & interfaces | 6–7 |
| Unit 3: Requirements & specification | 9–11 |
| Unit 4: Software process | 12–13 |
Full details for each unit are provided in the Course materials overview.
🛠️ Course Project
You will extend InsightUBC, an existing system that provides a REST API for managing courses and buildings at UBC. The work is divided across four deliverables (dates on the schedule), starting individually before partnering up for the second half.
The project is smaller in scale than real software development, but aims to keep much of its substance. Beyond writing and testing code, you'll justify design decisions, specify and scope new features, and follow the process discipline — reviews, documentation, and workflows — that professional teams rely on to ship reliably.