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


15 Results

CMPT 306.3: Game Mechanics

Will cover aspects of game graphics, physics, sound, input, AI and networking at an introductory level. This course is intended to provide a broad basis in computer game-related fields, serving as the primer and providing context for specialized courses in fourth year.

Weekly hours: 3 Lecture hours and 1.5 Tutorial hours
Prerequisite(s): CMPT 270.3.
Note: MATH 264 or MATH 266 are recommended.


CMPT 317.3: Introduction to Artificial Intelligence

A survey of essential Artificial Intelligence techniques and underlying theory. Basic search strategies, including uninformed search, heuristic search, and games. Basic knowledge representation and reasoning, including propositional satisfiability and theorem proving, Bayes rule, and Bayesian networks. Basic machine learning, including k-nearest neighbours, decision trees, neural networks, naive Bayes classifier, k-means.

Weekly hours: 3 Lecture hours and 1 Tutorial hours
Prerequisite(s): MATH 163.3 or CMPT 260.3; and CMPT 280.3; and STAT 242.3, STAT 245.3 or equivalent (including EE 216 or ME 251).


CMPT 318.3: Data Analytics

Introduces computational tools for the analysis of data. This course will focus on the design and implementation of data analytic pipelines, and the appropriate interpretation of the results of that analysis.

Weekly hours: 3 Lecture hours and 1.5 Practicum/Lab hours
Prerequisite(s): CMPT 270.3 and MATH 164.3; and STAT 242.3 or STAT 245 or equivalent.
Note: CMPT 280.3 is recommended as a pre- or co-requisite. Any calculus course is recommended as a prerequisite.


CMPT 332.3: Operating Systems Concepts

An introduction to the principles of modern operating systems. The synchronization and communication of cooperating processes. Process Scheduling. Virtual Memory. File System design and organization. Introduction to distributed systems.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Prerequisite(s): CMPT 214.3; and CMPT 280.3; and one of CMPT 215.3 or CME 331.3.


CMPT 340.3: Programming Language Paradigms

A comparative study of programming languages and paradigms. Introduction to functional programming languages, such as Haskell; topics include: recursion, higher-order functions, polymorphic types, lazy evaluation. Introduction to logic programming languages, such as Prolog; topics include: unification, backtracking, resolution, non-determinism. An introduction to interpreters, parsers, program transformations, and semantic models.

Weekly hours: 3 Lecture hours and 1 Tutorial hours
Prerequisite(s): CMPT 214.3; CMPT 260.3; and CMPT 270.3.
Note: One of CMPT 215 or CME 331 recommended.


CMPT 353.3: Full Stack Web Programming

Introduction into full-stack web programming. Basic client-server architecture. HTML & JavaScript. Front-end development frameworks. Databases and Web Storage. Web server platforms. Back end development platforms. Web Service (SOAP/REST). Web Application Architecture.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Prerequisite(s): CMPT 280.3
Note: Students with credit for CMPT 350.3 cannot take this course for credit.


CMPT 360.3: Algorithm Design Analysis and Correctness

Develops and analyzes standard techniques for algorithm development which are widely applicable to computer science programs. These include greedy algorithms, branch-and-bound, dynamic programming, satisfiability, graphs and network-flow, and exhaustive search, along with proofs of correctness. The master theorem and other complexity analyses (including output-bounded and amortized complexity) are introduced. Hardware-level interactions with these algorithms and efficient data structures, including cache-obliviousness, are discussed.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 260.3 and CMPT 280.3; and 9 credit units of MATH or STAT courses.


CMPT 364.3: Automata and Formal Languages

Introduces the foundations of Computer Science. The theory of computation is explored through automata and formal languages. In particular, finite automata, grammars, Turing Machines and applications to computer science such as dynamic modeling, computer architecture, lexical analysis and parsing are studied.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 260.3 and 9 credit units of MATH or STAT courses.


CMPT 370.3: Intermediate Software Engineering

Principles and techniques for developing software combined with the practical experience of creating a mid-size software system as a member of a software development team. Includes: teamwork; projects, planning and process; users and requirements; use cases; modeling; quality; software architecture; testing; GUI design, design principles, patterns and implementation; ethics; professionalism.

Weekly hours: 3 Lecture hours and 1.5 Tutorial hours
Prerequisite(s): CMPT 280.3.


CMPT 371.3: Software Management

Covers software management topics in the context of a significant group project. Includes: software process; process improvement; project tracking and metrics; project planning; project and group management; IT enterprise strategy and planning; software configuration management; deployment and maintenance; inspection; testing; verification and validation; and quality assurance.

Weekly hours: 3 Lecture hours and 1.5 Practicum/Lab hours and 1.5 Tutorial hours
Prerequisite(s): CMPT 214.3 and CMPT 370.3.
Prerequisite(s) or Corequisite(s): CMPT 280.3.


CMPT 381.3: Implementation of Graphical User Interfaces

Advanced introduction to concepts and structures used to develop GUIs in software, focusing on building user interfaces. Covers the fundamentals of GUI toolkits including input, widgets, layout, events, model-view-controller architectures, and two-dimensional graphics.

Weekly hours: 3 Lecture hours and 1 Practicum/Lab hours
Prerequisite(s): CMPT 280.3.


CMPT 384.3: Information Visualization

This course will introduce visualization process for different datasets, design principals, techniques for developing effective visualizations, visualization algorithms and interaction techniques. The course is targeted to students interested in using visualization in their own work, as well as to those who are interested in developing visualization systems. Topics include: data abstractions, visualization process, design principles, visualizations of tabular data, geo-visualizations, cartographic representation, visualization for sets, temporal and hierarchical data (treemaps, radial layouts), network visualizations, visualization algorithms and software, interactions with large datasets, and a brief overview of visual analytics.

Weekly hours: 3 Lecture hours and 1 Tutorial hours
Prerequisite(s): CMPT 280.3.
Note: MATH 164 is recommended. Students with credit for CMPT 398.3 Information Visualization may not take this course for credit.


CMPT 394.3: Simulation Principles

Introduction to the development of logical, numerical and statistical models of systems; deterministic and probabilistic models; Monte Carlo simulations. Basic elements involved in simulation such as entities, attributes, events and time representation. Properties of computer modelling languages; design, development and testing of models.

Weekly hours: 3 Lecture hours
Prerequisite(s): CMPT 270.3; and MATH 110.3; and one of STAT 242.3 (preferred), STAT 245.3, or EE 216.3.


CMPT 398.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 399.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