Skip to content

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.

  • 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?

UnitWeeks
Unit 1: Design in the small1–5
Unit 2: Layers & interfaces6–7
Unit 3: Requirements & specification9–11
Unit 4: Software process12–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.

Course reader licensed under CC BY-SA 3.0.