Software systems are amongst the most complex systems ever built by humans. Two fundamental concepts central to supporting the construction and evolution of software systems are abstraction and decomposition. Building on the introduction to these concepts in CPSC 110, this course will explain how these concepts manifest over and over again in different forms as we build larger and larger systems.

The goals of this course are to provide students with the ability to recognize, analyze and use these concepts to construct software systems that solve real problems.

The course is designed to be interesting, accessible and useful to a wide range of students. CPSC 110 is a pre-requisite (CPSC 111 may be considered upon discussion with the instructor. Update: As of 2015, please contact undergrad-info@cs.ubc.ca to have your prerequisites assessed.).  CPSC 210 will be considered equivalent to CPSC 211, providing students access to other second and third year courses.

Please consult the page for specific offerings of the course for more details: