This chapter provides an archive of courses offered by UBC. For current course sections and schedules, please visit the online Course Schedule (http://www.students.ubc.ca/courses).

Computer Science, Faculty of Science

CPSC: Computer Science

The Department of Computer Science offers several options in first year: CPSC 110 is for students pursuing Computer Science specializations or who plan to take CPSC 210. CPSC 103 targets students desiring an introduction to computing and programming, but with no plans to take further Computer Science courses. CPSC 100 targets students desiring a general introduction to computational thinking with little programming. Consult https://www.cs.ubc.ca/students/undergrad/courses/choose-your-first-course for more information. Students who have credit for or exemption from APSC 160 or CPSC 110 may not take CPSC 100 or CPSC 103. Students with other computer science transfer credit must consult the department. Students currently registered in CPSC 110 or with Computer Science credit from another institution may not take APSC 160 for credit. Students with sufficient background in the concepts presented in CPSC 110 and an advisor's approval are encouraged to challenge CPSC 110 for credit by taking an examination. Additional fees are charged for some courses. For more information students are advised to contact the Department of Computer Science or visit the Computer Science undergraduate website: http://www.cs.ubc.ca/students/undergrad). For information on credit exclusion between CPSC and other courses, please consult the Faculty of Science Credit Exclusion List.

CPSC 100 (3) Computational Thinking

Meaning and impact of computational thinking. Solving problems using computational thinking, testing, debugging. How computers work. No prior computing experience required. Not for students with existing credit for or exemption from CPSC 110 or APSC 160. [3-1-0]

CPSC 101 (4) Connecting with Computer Science

Fundamentals of computer science and their connections with the arts, psychology, and biology. Historical, cultural, and gender perspectives of important contributions to the field will be discussed. No prior computing background required. [3-3-0]Equivalency: GRSJ 201, WMST 201.

CPSC 103 (3) Introduction to Systematic Program Design

Computation as a tool for systematic problem solving in non-computer-science disciplines. Introductory programming skills. Not for credit for students who have credit for, or exemption from, or are concurrently taking CPSC 110 or APSC 160. No programming experience expected. [3-0-1]

Approved and supervised technical work experience in the computing industry for a minimum of 3.5 months. Normally taken during Winter Session of second year. Technical report required. Restricted to students admitted to the Co-operative Education Program in Computer Science. This course is not eligible for Credit/D/Fail grading.

CPSC 299 (3) Co-operative Work Placement II

Approved and supervised technical work experience in the computing industry for a minimum of 3.5 months. Normally taken during the summer following the second year. Technical report required. Restricted to students admitted to the Co-operative Education. This course is not eligible for Credit/D/Fail grading.Prerequisite: CPSC 298.

CPSC 301 (3) Computing in the Life Sciences

Basic concepts, tools, and techniques for working with scientific data at larger scales, higher speeds, and lower costs that would otherwise be impossible. Applications and examples drawn from the life sciences. No prior computing background is required. Not for credit for students who have credit for any of the following: APSC 160, Computer Science AP, IB Computer Science, EOSC 211, or 3 credits of CPSC beyond CPSC 101. [3-2-0]Prerequisite: Third-year standing or higher.

Principles of symbolic computing, using languages based upon first-order logic and the lambda calculus. Algorithms for implementing such languages. Applications to artificial intelligence and knowledge representation. [3-0-0]Prerequisite: One of CPSC 210, EECE 210, EECE 309, CPEN 221.

Students will attend a series of research seminars presented by faculty members, produce a thesis proposal, and choose their honours thesis supervisor. Available to Honours students. Majors students with satisfactory standing may also be permitted to enrol. [1-0-0]

CPSC 398 (3) Co-operative Work Placement III

Approved and supervised technical work experience in the computing industry for a minimum of 3.5 months. Normally taken during the summer following the third year. Technical report required. Restricted to students admitted to the Co-operative Education Program in Computer Science. This course is not eligible for Credit/D/Fail grading.

CPSC 399 (3) Co-operative Work Placement IV

Approved and supervised technical work experience in the computing industry for a minimum of 3.5 months. Normally taken during the fall term of the fourth year. Technical report required. Restricted to students admitted to the Co-operative Education Program in Computer Science. This course is not eligible for Credit/D/Fail grading.

CPSC 402 (3) Numerical Linear Algebra

Investigation of the practical techniques of computational linear algebra. Orthogonal transformations and their application to the solution of linear equations, the eigenproblem, and linear least squares. Complete solution of the symmetric eigenproblem, including bisection and the QR method. Refinements of these techniques for sparse matrices. [3-0-0]Prerequisite: One of CPSC 302, CPSC 303, MATH 307.

Specification, design, construction and validation of multi-version software systems. [3-0-0]Prerequisite: Either (a) CPSC 310 or (b) one of EECE 310, CPEN 321 and one of EECE 315, CPEN 331.

CPSC 411 (3) Introduction to Compiler Construction

A practical introduction to lexical analysis, syntactic analysis, type-checking, code generation and optimization. This will be used to design and implement a compiler for a small language. [3-0-0]Prerequisite: All of CPSC 213, CPSC 221, CPSC 311.

CPSC 415 (3) Advanced Operating Systems

Process synchronization and communication schemes, including message-passing and concepts of monitor and serializer. Virtual memory systems management and the problem of information sharing in such systems. The working set principle. Traps and interrupt handling. Elementary queuing theory and its application such as process scheduling, system balancing and load control. File systems and operating system design methodologies. [3-0-0]Prerequisite: One of CPSC 313, EECE 315, CPEN 331.

Selected topics in a specific area within Computer Science. May be taken more than once for credit with permission of the department. Prerequisite: Third-year standing in a Computer Science or Computer Engineering specialization, and permission of the department.

CPSC 444 (3) Advanced Methods for Human Computer Interaction

Design and evaluation methodologies and theories; formal models of the user including visual, motor, and information processing; advanced evaluation methods including laboratory experiments and field studies; HCI research frontiers. [2-2-2]Prerequisite: All of CPSC 310, CPSC 344 and one of STAT 200, STAT 241.

Open ordinarily to students in Computer Science with at least a 72% average and the permission of the head of the department or designate. The course may consist of supervised reading, participation in a seminar, and one or more programming projects.

CPSC 449 (6) Honours Thesis

Under supervision of a faculty member, students investigate a research topic and prepare a thesis. Prerequisite: CPSC 349.

CPSC 490 (3) Student Directed Seminars

Self-directed, collaborative studies, in a group-learning environment, initiated and coordinated by senior undergraduate students with the supervision of a faculty advisor. Course structure, enrolment and delivery methods will comply with the "Handbook for Student Directed Seminars". [3-0-0]

CPSC 491 (6) Interactive Digital Media Practicum

Design and implementation of interactive digital media systems using modern processes and tools. Projects provided by external clients or vetted entrepreneurial pitches are developed by interdisciplinary teams composed of one CPSC 491 student and multiple Master of Digital Media students. This course is not eligible for Credit/D/Fail grading.Prerequisite: All of CPSC 221, CPSC 310, CPSC 344 and Third-year standing.

CPSC 499 (3) Co-operative Work Placement V

Approved and supervised technical work experience in the computing industry for a minimum of 3.5 months. Normally taken during the summer following the fourth year. Technical report required. Restricted to students admitted to the Co-operative Education Program in Computer Science. This course is not eligible for Credit/D/Fail grading.