This Course and Program Catalogue is effective from May 2024 to April 2025.

Not all courses described in the Course and Program Catalogue are offered each year. For a list of course offerings in 2024-2025, please consult the class search website.

The following conventions are used for course numbering:

  • 010-099 represent non-degree level courses
  • 100-699 represent undergraduate degree level courses
  • 700-999 represent graduate degree level courses

Course search


31 Results

CMPT 400.3: Research Topics in Computer Science

Senior students will be introduced to research in an advanced area of computer science under the supervision of a faculty member specializing in the area.

Weekly hours: 1.5 Seminar/Discussion hours
Permission of the department required.
Prerequisite(s): In the final year of an Honours Program; or a cumulative percentage average of at least 70% in 24 credit units in computer science and written permission of the department.
Note: Students with credit for CMPT 405.3 or CMPT 407.3 may not receive credit for this course. Permission to register requires a written application to the Department of Computer Science.


CMPT 401.0: Professional Internship I

Internship students register in this zero-credit-unit course for the first four-month installment of the 16 month internship placement. This course is graded on a Pass/Fail basis.

Permission of the department required.
Prerequisite(s): Professional internship placement with a sponsoring employer.


CMPT 402.0: Professional Internship II

Internship students register in this zero-credit-unit course for the second four-month installment of the 16 month internship placement. This course is graded on a Pass/Fail basis.

Prerequisite(s): CMPT 401.


CMPT 403.0: Professional Internship III

Internship students register in this zero-credit-unit course for the third four-month installment of the 16 month internship placement. This course is graded on a Pass/Fail basis.

Prerequisite(s): CMPT 402.


CMPT 404.0: Professional Internship IV

Internship students register in this zero-credit-unit course for the last four-month installment of the 16 month internship placement. This course is graded on a Pass/Fail basis.

Prerequisite(s): CMPT 403.


CMPT 405.3: Project Design and Implementation

Senior students apply engineering and scientific methods to develop a major computer system or system component. Students work individually or in teams and are supervised by a faculty member specializing in the area. Students prepare and present interim and final reports on their project.

Weekly hours: 1.5 Practicum/Lab hours and 1.5 Seminar/Discussion hours
Permission of the department required.
Prerequisite(s): In the final year of an Honours Program; or a cumulative percentage average of at least 70% in 24 credit units in computer science.
Note: Students with credit for CMPT 400.3 or CMPT 407.3 may not receive credit for this course. Permission to register requires a written application to the Department of Computer Science.


CMPT 406.3: Game Design Workshop

This course will focus on topics of game design, game software engineering, and project management. Students will engage in a significant project in a large team of between 8 and 15 students (common in independent game development studios) and build a game of sufficient sophistication to warrant potential publication on an app or software store.

Prerequisite(s): CMPT 306


CMPT 407.3: Research Topics in Applied Computing

Senior students in Applied Computing will be introduced to research in an advanced area of computer science under the supervision of a faculty member specializing in the area.

Permission of the department required.
Restriction(s): Restricted to students in Applied Computing.
Prerequisite(s): In the final year of Honours program in Applied Computing; or a cumulative percentage of at least 70% in 24 credit units of courses in the C4 Major Requirement (for the chosen concentration) and written permission of the department.
Note: Students in the Geomatics Stream may take GEOG 490.3 or PLAN 490.3 in place of CMPT 407.3. Students in the Data Analytics Stream may take MATH 402.0 in place of CMPT 407.3. Students cannot count more than one of these courses toward a degree in Applied Computing. Students with credit for CMPT 400 or CMPT 405 may not receive credit for this course. Permission to register requires a written application to the Department of Computer Science.


CMPT 412.3: Social Computing and Participative Web 2.0

Will cover a variety of topics related to the emerging area of Social Computing and Participative Web. It will discuss theories, technologies and human issues of Web 2.0: how people network online, what communities they form, why they participate and contribute, and how to design infrastructures for successful online communities.

Prerequisite(s): One of CMPT 317.3, CMPT 318.3 or CMPT 353.3.


CMPT 423.3: Machine Learning

A survey of Machine Learning techniques, their underlying theory, and their application to realistic data. Machine learning techniques may include Neural Networks, Support Vector Machines, Bayesian networks, Hidden Markov Models, Particle Filtering; Expectation-Maximization; Sampling; Evaluation methodologies; Over-fitting and Regularization. Software tools will be introduced for practical application.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 317.3; one of STAT 242.3 (preferred) or STAT 245.3; and MATH 164.3.


CMPT 432.3: Advanced Operating Systems Concepts

An advanced look at the principles of modern operating systems. The process and the kernel, communication between processes, interrupt handling in the kernel. Message passing and synchronization primitives and their implementation. Implementation of Virtual memory and file systems. Device drivers and I/O.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 332.3
Note: Students with credit for CMPT 832 will not receive credit for this course.


CMPT 433.3: System and Network Administration

The deployment and maintenance of modern computer systems. Topics to be covered include architectures, heterogeneous systems, authentication and security, network services including firewalls, storage services, performance analysis and tuning, management and configuration of services and system resources, system initialization, drivers, cross-platform services, policies and procedures.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 332.3
Prerequisite(s) or Corequisite(s): One of CMPT 432.3, CMPT 434.3 or CMPT 438.3.


CMPT 434.3: Computer Networks

The principles and practice of computer networking, focusing on the Internet and its structure, protocols, and applications. Topics include network applications and programming, reliable data transfer, flow and congestion control, routing, multimedia networking, local area networks, security, and network management.

Weekly hours: 3 Lecture hours
Prerequisite(s):CMPT 332.3.
Note: Students with credit for CMPT 424 or CME 334 or CME 451 may not take this course for credit.


CMPT 435.3: Foundations of Concurrent Programming

Theory and practice of concurrent programming. Process interaction using shared variables and message passing; parallel computing; development of correct programs; general problem solving techniques; scientific computing; distributed programming.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Prerequisite(s): CMPT 215.3 and 6 credit units from: CMPT 332.3, CMPT 340.3 or CMPT 360.3.
Note: Students with credit for CMPT 835 may not take this course for credit.


CMPT 438.3: Introduction to Computer Security

Computer security is an essential requirement of any software system. This course covers the fundamental principles, mechanisms and models of security. More specifically, the course introduces students to security management, defense, and exploitation techniques including but limited to vulnerability assessment, access control, cryptography, intrusion detection, malicious software. The course assesses current security threats and gives students a hands-on experience with basic security strategies.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Prerequisite(s): CMPT 332.3
Prerequisite(s) or Corequisite(s): CMPT 434.3
Note: Students with credit for CMPT 838 may not take this course for credit.


CMPT 439.3: Software Security.

This course will explore the foundations of writing secure code. We will consider common programming flaws, how to exploit them, and how to fix them. We will consider defenses that prevent or mitigate these attacks, including advanced testing and program analysis techniques. Note: the lab for this course is offered in alternating weeks.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 332.3
Note: Students with credit for CMPT 333 or CMPT 839 may not receive credit for this course.


CMPT 440.3: Advanced Topics in Programming Languages

Advanced topics in programming languages will be selected from: programming language design, programming language semantics, code optimization, memory management, garbage collection, closures, functional programming, logic programming, aspect-orient programming, concurrent programming, history of programming languages, advanced programming language features and their implementation, polymorphic type systems, domain specific languages.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 340.3
Note: Students with credit for CMPT 821 may not take this course for credit.


CMPT 442.3: Compiler Design and Implementation

Introduction to the systematic construction of a compiler: context-free and regular grammars, scanners, attribute grammars, parsing, syntax trees, runtime organization, symbol tables, internal representations, compile-time error handling, semantic analysis, storage allocation, code generation, linking, byte code, interpreters, ahead-of-time (AoT) and just-in-time (JiT) techniques. Students will use compiler construction tools in a term project.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 215.3 and CMPT 364.3
Note: CMPT 340 recommended. Students with credit for CMPT 823 may not take this course for credit.


CMPT 451.3: Modelling and Algorithms for Biological Systems

This course focusses on mathematical and computational modelling of various real world processes, with the main focus on biological systems. Using discrete models, algorithmic strategies will be explored including exact algorithms, approximation algorithms, heuristic algorithms, and evolutionary algorithms. The algorithms and models used will involve sets, graphs, strings, trees, machines, and grammars. For each algorithmic technique, we will study applications from biological systems and bioinformatics, including biomolecule string matching, sequence alignment, sequence assembly, gene finding, structure prediction, gene expression data analysis, phylogeny, genome rearrangement, and simulations of molecular evolution.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 280.3; and one of BIOL 120.3 or BMSC 200.3
Note: Students with credit for BINF 300.3 or CMPT 813.3 may not take this course for credit.


CMPT 453.3: Cloud and Mobile Computing

Investigates the problems and possible approaches for enabling mobile and cloud computing. After a brief discussion of the basic problems in developing applications for the field, the class will focus on technologies such as RPC, RMI/Remoting, Web Services (SOAP/REST) and cloud platforms like IaaS, PaaS and SaaS.

Weekly hours: 3 Lecture hours
Prerequisite(s): One of CMPT 353.3, CMPT 370.3, or CMPT 381.3.
Note: Students with credit for CMPT 426 or CMPT 436 may not take this course for credit.


CMPT 463.3: Advanced Algorithms

A continuation of the algorithms part of CMPT 360. Some of the algorithm techniques include: augmenting algorithms for network flows, matching and graph connectivity, geometric algorithms for nearest neighbour, intersection problems, and convex hull, parallel and distributed algorithms.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 360.3.
Note: Students with credit for CMPT 416 or CMPT 810 may not take this course for credit.


CMPT 470.3: Advanced Software Engineering

Covers advanced software engineering principles and techniques. Includes: software architecture; software evolution; reverse engineering; design recovery; refactoring; software comprehension; software analysis; domain specific techniques; requirements and specification; advanced design and modeling techniques; formal methods; and the business of software.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 214.3 and CMPT 370.3.
Note: Students with credit for CMPT 816 will not receive credit for this course.


CMPT 479.3: Usability Engineering

This course presents a requirements engineering (RE) approach to usability engineering (UE) by providing in depth coverage of Usability Centered Development (UCD). UE and UCD provide a structured approach to developing usable user interface designs. UE helps integrate human-computer interaction (HCI) requirements and design approaches within development projects managed by software engineering (SE) methodologies.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 370 or permission of instructor.


CMPT 480.3: Accessible Computing

Investigates accessibility issues and features relating to the analysis and design of computing applications. It introduces major sources of information on accessible computing and works towards developing a comprehensive strategy for improving the accessibility of computing applications.

Weekly hours: 3 Lecture hours
Prerequisite(s): 9 credit units of CMPT courses at the 300-level or above.


CMPT 481.3: Human Computer Interaction

Fundamental theory and practice in the design, implementation, and evaluation of human-computer interfaces. Topics include: principles of design, usability engineering, methods for evaluating interfaces with or without user involvement, techniques for prototyping and implementing graphical user interfaces.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 370.3 or CMPT 381.3
Note: Students with credit for CMPT 811 may not take this course for credit.


CMPT 484.3: Graph Drawing and Network Visualization

This course will introduce mathematical models of networks, analysis of network structure, and visualization process for real-life network datasets. The course will put a special focus on graph drawing, which contains the algorithmic core for network analysis and visualization, and present how an abstract graph layout can be used to create effective visualizations for real-life networks. The content of this course will draw examples from many applied areas such as social sciences, computational biology, communication networks, VLSI circuits, and software engineering. The course is targeted to students interested in network analysis, as well as in visual analytics of network data. Topics include: Combinatorial analysis of graphs, common graph drawing algorithms, network visualization aesthetics, structural analysis of networks, an overview of network analysis tools and software, visualization of geospatial and dynamic networks, layered visualization of large networks, information propagation on a network, user interactions, and case studies from different practical domains.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 384.3; and either of CMPT 360.3 or CMPT 381.3
Note: CMPT 353.3 is recommended. Students with credit for CMPT 824 may not take this course for credit.


CMPT 485.3: Computer Graphics and Animation

Advanced topics in computer graphics, concentrating on image formation and modelling issues. The implications of the data-driven approach to computer graphics. Simulation and non-parametric methods contrasted. The course will involve a project investigating and implementing some current algorithms from the literature.

Weekly hours: 3 Lecture hours
Prerequisite(s): 6 credit units of 300-level CMPT; and one of MATH 164.3, MATH 266.3, EE 216.3, or CE 318.3.


CMPT 487.3: Image Processing and Computer Vision

Presents the fundamentals of theory and practice of image processing and computer vision. A range of topics are presented covering the phases of a typical image processing and computer vision pipeline: image preprocessing, image segmentation, region description, and classification/decision-making. Theory is practiced through computer programming assignments using a modern image processing library. Students completing this course can expect to be able to solve image processing and computer vision problems of up to moderate difficulty that increasingly arise across a wide range of disciplines and application areas.

Weekly hours: 3 Lecture hours
Prerequisite(s): One of CMPT 317.3, CMPT 332.3, CMPT 340.3 or CMPT 370.3; and one of MATH 164.3, EE 216.3 or CE 318.3.
Note: Students with credit for CMPT 819 may not take this course for credit.


CMPT 489.3: Deep Learning and Applications

A survey of Deep Learning techniques and their application to problems in computer vision and data science. Deep learning techniques may include Deep Neural Networks, Convolutional Neural Networks, Recurrent Networks, Deep Generative Models and Reinforcement Learning. Application domains will focus on computer vision problems, including image classification, object detection and image segmentation. Additional application domains in natural language processing and robotics control will be introduced. Software tools will be introduced for practical application.

Weekly hours: 3 Lecture hours
Prerequisite(s): One of MATH 164.3, MATH 266.3, EE 216.3, or CE 318.3; and one of STAT 242.3 (preferred) or STAT 245.3; and one of CMPT 317.3 or CMPT 487.3
Note: Students with credit for CMPT 828 or CMPT 498.3 Deep Learning and Applications may not take this course for credit.


CMPT 498.3: Special Topics

Offered occasionally by visiting faculty and in other special situations to cover, in depth, topics that are not thoroughly covered in regularly offered courses.

Weekly hours: 3 Seminar/Discussion hours


CMPT 499.6: Special Topics

Offered occasionally by visiting faculty and in other special situations to cover, in depth, topics that are not thoroughly covered in regularly offered courses.

Weekly hours: 3 Seminar/Discussion hours