colour wheel

Course Offerings

Course offerings within the department vary from introductory courses to courses for non-CS Majors, Co-op students and more. Below is a listing.

Full descriptions and pre-requisites can be found in the UBC Calendar.


When choosing electives, be careful to meet Faculty requirements for your chosen degree. In the Faculty of Science, these include but are not limited to Communications, Arts and Breadth requirements. There is also the requirement of having a sufficient number of upper-level (3rd or 4th year) elective courses.  Similarly, the Faculty of Arts has requirements for graduating with a BA. 

Please see the Faculty of Science and Faculty of Arts webpages for details.  Be sure to pay attention to promotion requirements, including the minimum and maximum number of credits.

Introductory Courses:

CPSC 100 (3) Computational Thinking

CPSC 103 (3) Introduction to Systematic Program Design

CPSC 107 (3) Systematic Program Design

CPSC 110 (4) Computation, Programs, and Programming

CPSC 121 (4) Models of Computation

Courses for APSC students:

CPSC 259 (4) Data Structures and Algorithms for Electrical Engineers

CPSC 261 (4) Basics of Computer Systems

Work Placement sections for students in co-op:

CPSC 298 (3) Co-operative Work Placement I

CPSC 299 (3) Co-operative Work Placement II

CPSC 398 (3) Co-operative Work Placement III

CPSC 399 (3) Co-operative Work Placement IV

Courses accessible to non-majors:

CPSC 203 (3) Programming, Problem Solving, and Algorithms

CPSC 330 (3) Applied Machine Learning

CPSC 430 (3) Computers and Society

Other courses:

CPSC 210 (4) Models of Computation

CPSC 213 (4) Introduction to Computer Systems

CPSC 221 (4) Basic Algorithms and Data Structures

CPSC 302 (3) Numerical Computation for Algebraic Problems

CPSC 303 (3) Numerical Approximation and Discretization

CPSC 304 (3) Introduction to Relational Databases

CPSC 310 (4) Introduction to Software Engineering

CPSC 311 (3) Definition of Programming Languages

CPSC 312 (3) Functional and Logic Programming

CPSC 313 (3) Computer Hardware and Operating Systems

CPSC 314 (3) Computer Graphics

CPSC 317 (3) Internet Computing

CPSC 319 (4) Software Engineering Project

CPSC 320 (3) Intermediate Algorithm Design and Analysis

CPSC 322 (3) Introduction to Artificial Intelligence

CPSC 340 (3) Machine Learning and Data Mining

CPSC 344 (3) Introduction to Human Computer Interaction Methods

CPSC 349 (0) Honours Research Seminar

CPSC 402 (3) Numerical Linear Algebra

CPSC 404 (3) Advanced Relational Databases

CPSC 406 (3) Computational Optimization

CPSC 410 (3) Advanced Software Engineering

CPSC 411 (3) Introduction to Compiler Construction

CPSC 415 (3) Advanced Operating Systems

CPSC 416 (3) Distributed Systems

CPSC 417 (3) Computer Networking

CPSC 418 (3) Parallel Computation

CPSC 420 (3) Advanced Algorithms Design and Analysis

CPSC 421 (3) Introduction to Theory of Computing

CPSC 422 (3) Intelligent Systems

CPSC 424 (3) Geometric Modelling

CPSC 425 (3) Computer Vision

CPSC 426 (3) Computer Animation

CPSC 427 (3) Video Game Programming

CPSC 436 (1-6) d Topics in Computer Science

CPSC 440 (3) Advanced Machine Learning

CPSC 444 (3) Advanced Methods for Human Computer Interaction

CPSC 445 (3) Algorithms in Bioinformatics

CPSC 448 (3/6) c Directed Studies in Computer Science

CPSC 449 (6) Honours Thesis

CPSC 490 (3) Student Directed Seminars

CPSC 491 (6) Interactive Digital Media Practicum

CPSC 499 (3) Co-operative Work Placement V

Note:  In case of disagreement between these CPSC department web pages and the official UBC Calendar, the Calendar takes precedence. Please let us know about any errors.  It remains the responsibility of the student to select a program and courses that meets all Department and Faculty requirements for graduation.