Download a PDF of this section: Courses Print this page Email this page

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 students with existing credit for or exemption from CPSC 110 or APSC 160. No programming experience expected. [3-0-1]
CPSC 110 (4) Computation, Programs, and Programming
Fundamental program and computation structures. Introductory programming skills. Computation as a tool for information processing, simulation and modeling, and interacting with the world. [3-3-0]
CPSC 121 (4) Models of Computation
Physical and mathematical structures of computation. Boolean algebra and combinations logic circuits; proof techniques; functions and sequential circuits; sets and relations; finite state machines; sequential instruction execution. [3-2-1]
Prerequisite: Principles of Mathematics 12 or Pre-calculus 12.
Corequisite: CPSC 110.
CPSC 189 (1) Systematic Program Design in Python
Systematic design of small programs using the Python programming language. [1-1-0]
Prerequisite: CPSC 110 and one of Principles of Mathematics 12 or Pre-calculus 12.
CPSC 210 (4) Software Construction
Design, development, and analysis of robust software components. Topics such as software design, computational models, data structures, debugging, and testing. [3-2-0]
Prerequisite: One of CPSC 110, CPSC 260.
CPSC 213 (4) Introduction to Computer Systems
Software architecture, operating systems, and I/O architectures. Relationships between application software, operating systems, and computing hardware; critical sections, deadlock avoidance, and performance; principles and operation of disks and networks. [3-3-0]
Prerequisite: All of CPSC 121, CPSC 210.
CPSC 221 (4) Basic Algorithms and Data Structures
Design and analysis of basic algorithms and data structures; algorithm analysis methods, searching and sorting algorithms, basic data structures, graphs and concurrency. [3-2-0]
Prerequisite: One of CPSC 210, EECE 210, CPEN 221 and one of CPSC 121, MATH 220.
CPSC 259 (4) Data Structures and Algorithms for Electrical Engineers
Advanced procedural programming. Fundamental algorithms for sorting and searching. Data structures including lists, trees, and hash tables. Introduction to scripting languages and file input/output. [3-2-0]
Prerequisite: APSC 160.
CPSC 260 (3) Data Structures and Algorithms for Computer Engineers
Design and analysis of object-oriented programs, emphasizing data structures. Topics include: classes, interfaces, fundamental data structures, algorithmic complexity, basic debugging and testing techniques. [3-1-0]
Prerequisite: APSC 160.
CPSC 261 (4) Basics of Computer Systems
Software architecture, operating systems, and I/O architectures. Relationships between application software, operating systems, and computing hardware; critical sections, deadlock avoidance, and performance; principles and operation of disks and networks. [3-2-1]
Prerequisite: One of EECE 259, CPEN 211 and one of CPSC 260, EECE 210, CPEN 221.
CPSC 298 (3) Co-operative Work Placement I
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.
CPSC 302 (3) Numerical Computation for Algebraic Problems
Numerical techniques for basic mathematical processes involving no discretization, and their analysis. Solution of linear systems, including analysis of round-off errors; norms and condition number; introduction to iterative techniques in linear algebra, including eigenvalue problems; solution to nonlinear equations. [3-0-0]
Prerequisite: One of CPSC 103, CPSC 110, CPSC 260, EOSC 211, PHYS 210 and one of MATH 101, MATH 103, MATH 105, MATH 121 and one of MATH 152, MATH 221, MATH 223.
CPSC 303 (3) Numerical Approximation and Discretization
Numerical techniques for basic mathematical processes involving discretization, and their analysis. Interpolation and approximation, including splines and least squares data fitting; numerical differentiation and integration; introduction to numerical initial value ordinary differential equations. [3-0-0]
Prerequisite: One of CPSC 103, CPSC 110, CPSC 260, EOSC 211, PHYS 210 and one of MATH 101, MATH 103, MATH 105, MATH 121 and one of MATH 152, MATH 221, MATH 223.
CPSC 304 (3) Introduction to Relational Databases
Overview of database systems, ER models, logical database design and normalization, formal relational query languages, SQL and other commercial languages,data warehouses, special topics. [3-0-1]
Prerequisite: Either (a) CPSC 221 or (b) all of CPSC 260, EECE 320 and one of CPSC 210, EECE 210, EECE 309.
CPSC 310 (4) Introduction to Software Engineering
Specification, design, implementation and maintenance of large, multi-module software systems. Principles, techniques, methodologies and tools for computer aided software engineering (CASE); human-computer interfaces, reactive systems, hardware-software interfaces and distributed applications. [3-2-0]
Prerequisite: CPSC 210.
CPSC 311 (3) Definition of Programming Languages
Comparative study of advanced programming language features. Statement types, data types, variable binding, parameter passing mechanisms. Methods for syntactic and semantic description of programming languages. [3-0-1]
Prerequisite: CPSC 210.
CPSC 312 (3) Functional and Logic Programming
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.
CPSC 313 (3) Computer Hardware and Operating Systems
Instruction sets, pipelining, code optimization, caching, virtual memory management, dynamically linked libraries, exception processing, execution time of programs. [3-0-1]
Prerequisite: Either (a) all of CPSC 213, CPSC 221 or (b) all of CPSC 210, CPSC 213, CPSC 260, EECE 320.
CPSC 314 (3) Computer Graphics
Human vision and colour; geometric transformations; algorithms for 2-D and 3-D graphics; hardware and system architectures; shading and lighting; animation. [3-1-0]
Prerequisite: One of MATH 200, MATH 217, MATH 226, MATH 253 and one of MATH 152, MATH 221, MATH 223 and either (a) CPSC 221 or (b) all of CPSC 260, EECE 320.
CPSC 317 (3) Internet Computing
Computer networking, basic communication protocols, network infrastructure and routing. Common application-level protocols and principles associated with developing distributed applications. [3-0-1]
Prerequisite: All of CPSC 213, CPSC 221.
CPSC 319 (4) Software Engineering Project
The design, implementation, and test of a large software system, using a team approach. [3-0-2]
Prerequisite: CPSC 310.
CPSC 320 (3) Intermediate Algorithm Design and Analysis
Systematic study of basic concepts and techniques in the design and analysis of algorithms, illustrated from various problem areas. Topics include: models of computation; choice of data structures; graph-theoretic, algebraic, and text processing algorithms. [3-0-1]
Prerequisite: Either (a) CPSC 221 or (b) all of CPSC 260, EECE 320. In addition to above pre-requisites, at least 3 credits from COMM 291, BIOL 300, MATH or STAT at 200 level or above.
CPSC 322 (3) Introduction to Artificial Intelligence
Problem-solving and planning; state/action models and graph searching. Natural language understanding Computational vision. Applications of artificial intelligence. [3-0-0]
Prerequisite: Either (a) CPSC 221 or (b) all of CPSC 260, EECE 320 and one of CPSC 210, EECE 210, EECE 309.
CPSC 340 (3) Machine Learning and Data Mining
Models of algorithms for dimensionality reduction, nonlinear regression, classification, clustering and unsupervised learning; applications to computer graphics, computer games, bio-informatics, information retrieval, e-commerce, databases, computer vision and artificial intelligence. [3-0-1]
Prerequisite: One of MATH 152, MATH 221, MATH 223 and one of MATH 200, MATH 217, MATH 226, MATH 253, MATH 263 and one of STAT 200, STAT 203, STAT 241, STAT 251, MATH 302, STAT 302, MATH 318, BIOL 300; and either (a) CPSC 221 or (b) all of CPSC 260, EECE 320 and one of CPSC 210, EECE 210, EECE 309.
CPSC 344 (3) Introduction to Human Computer Interaction Methods
Basic tools and techniques, teaching a systematic approach to interface design, task analysis, analytic and empirical evaluation methods. [2-2-2]
Prerequisite: One of CPSC 210, EECE 210, EECE 309, CPEN 221.
CPSC 349 (0) Honours Research Seminar
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.
CPSC 404 (3) Advanced Relational Databases
Physical database design, indexing, relational query processing and optimization, transaction processing, concurrency control, crash recovery, data warehouses, data cubes, views, special topics. [3-0-0]
Prerequisite: CPSC 304 and one of CPSC 213, CPSC 261.
CPSC 406 (3) Computational Optimization
Formulation and analysis of algorithms for continuous and discrete optimization problems; linear, nonlinear, network, dynamic, and integer optimization; large-scale problems; software packages and their implementation; duality theory and sensitivity. [3-0]
Prerequisite: One of CPSC 302, CPSC 303, MATH 307.
CPSC 410 (3) Advanced Software Engineering
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.
CPSC 416 (3) Distributed Systems
Concepts and design of distributed systems. Communication architecture and models for interprocess communication. Process migration, naming, distributed file systems, fault tolerance, and concurrency control. [3-0-0]
Prerequisite: One of CPSC 313, EECE 315, CPEN 331 and one of CPSC 317, EECE 358, ELEC 331.
CPSC 417 (3) Computer Networking
Network protocols and architecture including internetworking, the Internet, layered communication protocols, routing, flow and congestion control, network performance, wired and wireless data communication. [3-0]
Prerequisite: All of CPSC 313, CPSC 317 and one of STAT 200, STAT 241.
CPSC 418 (3) Parallel Computation
Algorithms, architectures, and programming paradigms for parallel computation. Shared memory, message passing, and data parallel architectures and programming models. Parallel algorithms including reduce, scan, and sorting networks. Reasoning about the correctness of parallel programs. Performance analysis and measurement for parallel programs. [3-0-0]
Prerequisite: One of CPSC 261, CPSC 313, EECE 476, CPEN 411 and one of CPSC 320, EECE 320.
CPSC 420 (3) Advanced Algorithms Design and Analysis
The study of advanced topics in the design and analysis of algorithms and associated data structures. Topics include algorithms for graph-theoretic; algebraic and geometric problems; algorithms on nonsequential models; complexity issues; approximation algorithms. [3-0-0]
Prerequisite: CPSC 320.
CPSC 421 (3) Introduction to Theory of Computing
Characterizations of computability (using machines, languages and functions). Universality, equivalence and Church's thesis. Unsolvable problems. Restricted models of computation. Finite automata, grammars and formal languages. [3-0-0]
Prerequisite: Either (a) CPSC 221 or (b) all of CPSC 260, EECE 320. CPSC 320 is recommended.
CPSC 422 (3) Intelligent Systems
Principles and techniques underlying the design, implementation and evaluation of intelligent computational systems. Applications of artificial intelligence to natural language understanding, image understanding and computer-based expert and advisor systems. Advanced symbolic programming methodology. [3-0-0]
Prerequisite: CPSC 322.
CPSC 424 (3) Geometric Modeling
Digital representation of curves and surfaces, including splines, subdivision surfaces and meshes. Principles, algorithms and mathematical foundations for geometry representation in computer graphics, computer vision, fabrication, CAD/CAM, and medical imaging. Algorithms for acquisition, creation, representation, and processing of 3D shapes. [3-0-1]
Prerequisite: CPSC 320 and one of MATH 152, MATH 221, MATH 223 and one of MATH 200, MATH 217, MATH 226, MATH 253.
CPSC 425 (3) Computer Vision
Introduction to the processing and interpretation of images. Image sensing, sampling, and filtering. Algorithms for colour analysis, texture description, stereo imaging, motion interpretation, 3D shape recovery, and recognition. [3-0-0]
Prerequisite: All of MATH 200, MATH 221 and either (a) CPSC 221 or (b) all of CPSC 260, EECE 320.
CPSC 426 (3) Computer Animation
Motion in computer graphics for characters and their environments. Keyframing, inverse kinematics, particle systems, rigid body dynamics, contact and collision, controller-based active motion, motion capture. [3-0-0]
Prerequisite: CPSC 314.
CPSC 430 (3) Computers and Society
Impact of computer technology on society; historical perspectives; social and economic consequences of large-scale information processing systems and automatic control; legal and ethical problems in computer applications. Computers and the individual: machine versus human capabilities, fact and fancy; problematic interface between man and machine. [3-0-0]
Prerequisite: 3 credits of Computer Science and at least third-year standing.
CPSC 436 (1-6) d Topics in Computer Science
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.
CPSC 445 (3) Algorithms in Bioinformatics
Sequence alignment, phylogenetic tree reconstruction, prediction of RNA and protein structure, gene finding and sequence annotation, gene expression, and biomolecular computing. [3-0-0]
Prerequisite: CPSC 320 and six credits of BIOL beyond BIOL 111.
CPSC 448 (3/6) c Directed Studies in Computer Science
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 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.
CPSC 500 (3) Fundamentals of Algorithm Design and Analysis
This course is not eligible for Credit/D/Fail grading.
CPSC 501 (3) Theory of Automata, Formal Languages and Computability
This course is not eligible for Credit/D/Fail grading.
CPSC 502 (3) Artificial Intelligence I
This course is not eligible for Credit/D/Fail grading.
CPSC 503 (3) Computational Linguistics I
This course is not eligible for Credit/D/Fail grading.
CPSC 504 (3) Data Management
This course is not eligible for Credit/D/Fail grading.
CPSC 505 (3) Image Understanding I: Image Analysis
This course is not eligible for Credit/D/Fail grading.
CPSC 506 (3) Complexity of Computation
This course is not eligible for Credit/D/Fail grading.
CPSC 507 (3) Software Engineering
This course is not eligible for Credit/D/Fail grading.
CPSC 508 (3) Operating Systems
This course is not eligible for Credit/D/Fail grading.
CPSC 509 (3) Programming Language Principles
This course is not eligible for Credit/D/Fail grading.
CPSC 511 (3) Implementation of Programming Languages
This course is not eligible for Credit/D/Fail grading.
CPSC 513 (3) Introduction to Formal Verification and Analysis
This course is not eligible for Credit/D/Fail grading.
CPSC 514 (3) Computer Graphics: Rendering
This course is not eligible for Credit/D/Fail grading.
CPSC 515 (3) Computational Robotics
This course is not eligible for Credit/D/Fail grading.
CPSC 516 (3) Computational Geometry
This course is not eligible for Credit/D/Fail grading.
CPSC 517 (3) Sparse Matrix Computation
This course is not eligible for Credit/D/Fail grading.
CPSC 519 (3) Logic Programming and Functional Programming
This course is not eligible for Credit/D/Fail grading.
CPSC 520 (3) Numerical Solution of Differential Equations
This course is not eligible for Credit/D/Fail grading.
CPSC 521 (3) Parallel Algorithms and Architectures
This course is not eligible for Credit/D/Fail grading.
CPSC 522 (3) Artificial Intelligence II
This course is not eligible for Credit/D/Fail grading.
CPSC 524 (3) Computer Graphics: Modeling
This course is not eligible for Credit/D/Fail grading.
CPSC 525 (3) Image Understanding II: Scene Analysis
This course is not eligible for Credit/D/Fail grading.
CPSC 526 (3) Computer Animation
This course is not eligible for Credit/D/Fail grading.
CPSC 527 (3) Computer Communication Protocols
This course is not eligible for Credit/D/Fail grading.
CPSC 529 (3) Definition of Programming Languages
This course is not eligible for Credit/D/Fail grading.
CPSC 530 (2-6) c Topics in Information Processing
This course is not eligible for Credit/D/Fail grading.
CPSC 531 (3-6) d Topics in Theory of Computation
This course is not eligible for Credit/D/Fail grading.
CPSC 532 (2-6) d Topics in Artificial Intelligence
This course is not eligible for Credit/D/Fail grading.
CPSC 533 (2-6) d Topics in Computer Graphics
This course is not eligible for Credit/D/Fail grading.
CPSC 534 (2-6) d Topics in Data Management
This course is not eligible for Credit/D/Fail grading.
CPSC 535 (2-6) d Topics in Simulation and Optimization
This course is not eligible for Credit/D/Fail grading.
CPSC 536 (2-6) d Topics in Algorithms and Complexity
This course is not eligible for Credit/D/Fail grading.
CPSC 537 (2-6) d Topics in Coding and Information Theory
This course is not eligible for Credit/D/Fail grading.
CPSC 538 (2-6) d Topics in Computer Systems
This course is not eligible for Credit/D/Fail grading.
CPSC 539 (2-6) d Topics in Programming Languages
This course is not eligible for Credit/D/Fail grading.
CPSC 540 (3) Machine Learning
This course is not eligible for Credit/D/Fail grading.
CPSC 542 (2-6) d Topics in Numerical Computation
This course is not eligible for Credit/D/Fail grading.
CPSC 543 (3) Physical User Interface Design and Evaluation
This course is not eligible for Credit/D/Fail grading.
CPSC 544 (3) Human Computer Interaction
This course is not eligible for Credit/D/Fail grading.
CPSC 545 (3) Algorithms for Bioinformatics
This course is not eligible for Credit/D/Fail grading.
CPSC 546 (3) Numerical Optimization
This course is not eligible for Credit/D/Fail grading.
CPSC 547 (3) Information Visualization
This course is not eligible for Credit/D/Fail grading.
CPSC 548 (3) Directed Study
This course is not eligible for Credit/D/Fail grading.
CPSC 549 (6/12) c Master's Thesis
This course is not eligible for Credit/D/Fail grading.
CPSC 550 (3) Machine Learning II
This course is not eligible for Credit/D/Fail grading.
CPSC 554 (2-6) d Topics in Human-Computer Interaction
This course is not eligible for Credit/D/Fail grading.
CPSC 564 (3) Data Mining
This course is not eligible for Credit/D/Fail grading.
CPSC 589 (3) M.Sc. Major Essay
This course is not eligible for Credit/D/Fail grading.
CPSC 590 (3) Research Methods in Computer Science
This course is not eligible for Credit/D/Fail grading.
CPSC 649 (0) Doctoral Dissertation

a place of mind, The University of British Columbia

Student Services
Vancouver Campus
1874 East Mall
Vancouver, BC Canada V6T 1Z1

Emergency Procedures | Accessibility | Contact UBC | © Copyright The University of British Columbia