Courses and Breadth Areas

For a list and scheduling of the currently offered graduate courses, please refer to the course schedule page.

For a list of homepages and mailing lists for the current course offerings, please refer to the index of course homepages and mailing lists.

See below for graduate courses offered by the School of Computing Science. The courses are organized into two tables. Table 1 contains courses in five specific breadth areas. Table 2 contains more general topic courses, e.g., directed reading. There are also courses designated for various degree programs. For completing the breadth requirement, please download the "Breadth Evaluation Request Form" from the forms page:

Table 1

AREA I - Algorithms and Complexity Theory

Computability and Logic

CMPT 701

Deep connections between logic and computation have been evident since early work in both areas. More recently, logic-based methods have led to important progress in diverse areas of computing science. This course will provide a foundation in logic and computability suitable for students who wish to understand the application of logic in various areas of CS, or as preparation for more advanced study in logic or theoretical CS.

Design and Analysis of Algorithms

CMPT 705

The objective of this course is to expose students to basic techniques in algorithm design and analysis. Topics will include greedy algorithms, dynamic programming, advanced data structures, network flows, randomized algorithms. Students with credit for CMPT 706 may not take this course for further credit.

Computational Complexity

CMPT 710

This course provides a broad view of theoretical computing science with an emphasis on complexity theory. Topics will include a review of formal models of computation, language classes, and basic complexity theory; design and analysis of efficient algorithms; survey of structural complexity including complexity hierarchies, NP-completeness, and oracles; approximation techniques for discrete problems. Equivalent Courses: CMPT810

Bioinformatics Algorithms

CMPT 711

Fundamental algorithmic techniques used to solve computational problems encountered in molecular biology. This area is usually referred to as Bioinformatics or Computational Biology. Students who have taken CMPT 881 (Bioinformatics) in 2007 or earlier may not take CMPT 711 for further credit.

Computational Geometry

CMPT 813

This course covers recent developments in discrete, combinatorial, and algorithmic geometry. Emphasis is placed on both developing general geometric techniques and solving specific problems. Open problems and applications will be discussed.

Algorithmic Graph Theory

CMPT 814

Algorithm design often stresses universal approaches for general problem instances. If the instances possess a special structure, more efficient algorithms are possible. This course will examine graphs and networks with special structure, such as chordal, interval, and permutation graphs, which allows the development of efficient algorithms for hard computational problems.

Algorithms of Optimization

CMPT 815

This course will cover a variety of optimization models, that naturally arise in the area of management science and operations research, which can be formulated as mathematical programming problems. Equivalent Courses: CMPT860

Special Topics in Theoretical Computing Science

CMPT 881

AREA II - Networks, Software Engineering, and Systems

Software Engineering

CMPT 745

This course examines fundamental principles of software engineering and state-of-the-art techniques for improving the quality of software designs. With an emphasis on methodological aspects and mathematical foundations, the specification, design and test of concurrent and reactive systems is addressed in depth. Students learn how to use formal techniques as a practical tool for the analysis and validation of key system properties in early design stages. Applications focus on high level design of distributed and embedded systems.

Computer Networks

CMPT 771

Investigates the design and operation of wide-area computer networks, especially the Internet and the TCP/IP protocol suite. This course studies performance modeling, security and quality of service; wireless connectivity and multimedia networking; network services, including recent topics and trends in these areas.

Formal Verification

CMPT 777

The goal of formal verification is to prove correctness or to find mistakes in software and other systems. This course introduces, at an accessible level, a formal framework for symbolic model checking, one of the most important verification methods. The techniques are illustrated with examples of verification of reactive systems and communication protocols. Students learn to work with a model checking tool such as NuSMV.

Theory of Communication Networks

CMPT 816

This course investigates the design, classification, modelling, analysis, and efficient use of communication networks such as telephone networks, interconnection networks in parallel processing systems, and special-purpose networks. Equivalent Courses: CMPT881

Special Topics in Computer Architecture

CMPT 885

Special Topics in Operating Systems

CMPT 886

AREA III - Artificial Intelligence

Knowledge Representation and Reasoning

CMPT 721

Knowledge representation is the area of Artificial Intelligence concerned with how knowledge can be represented symbolically and manipulated by reasoning programs. This course addresses problems dealing with the design of languages for representing knowledge, the formal interpretation of these languages and the design of computational mechanisms for making inferences. Since much of Artificial Intelligence requires the specification of a large body of domain-specific knowledge, this area lies at the core of AI. Prerequisite: CMPT 310/710 recommended. Cross-listed course with CMPT 411.

Machine Learning

CMPT 726

Machine Learning is the study of computer algorithms that improve automatically through experience. Provides students who conduct research in machine learning, or use it in their research, with a grounding in both the theoretical justification for, and practical application of, machine learning algorithms. Covers techniques in supervised and unsupervised learning, the graphical model formalism, and algorithms for combining models. Students who have taken CMPT 882 (Machine Learning) in 2007 or earlier may not take CMPT 726 for further credit.

Formal Topics - Knowledge Representation

CMPT 823

This course surveys current research in formal aspects of knowledge representation. Topics covered in the course will centre on various features and characteristics of encodings of knowledge, including incomplete knowledge, non monotonic reasoning, inexact and imprecise reasoning, meta-reasoning, etc. Suggested preparation: a course in formal logic and a previous course in artificial intelligence.

Natural Language Processing

CMPT 825

In this course, theoretical and applied issues related to the development of natural language processing systems and specific applications are examined. Investigations into parsing issues, different computational linguistic formalisms, natural language syntax, semantics, and discourse related phenomena will be considered and an actual natural language processor will be developed.

Intelligent Systems

CMPT 827

Intelligent systems are knowledge-based computer programs which emulate the reasoning abilities of human experts. This introductory course will analyze the underlying artificial intelligence methodology and survey advances in rule-based systems, constraint solving, incremental reasoning, intelligent backtracking and heuristic local search methods. We will look specifically at research applications in intelligent scheduling, configuration and planning. The course is intended for graduate students with a reasonable background in symbolic programming.

Special Topics in Artificial Intelligence

CMPT 882

AREA IV - Databases, Data Mining, and Computational Biology

Database Systems

CMPT 740

Introduction to advanced database system concepts, including query processing, transaction processing, distributed and heterogeneous databases, object-oriented and object-relational databases, data mining and data warehousing, spatial and multimedia systems and Internet information systems.

Data Mining

CMPT 741

The student will learn basic concepts and techniques of data mining. Unlike data management required in traditional database applications, data analysis aims to extract useful patterns, trends and knowledge from raw data for decision support. Such information are implicit in the data and must be mined to be useful.

Special Topics in Bioinformatics

CMPT 829

Examination of recent literature and problems in bioinformatics. Within the CIHR graduate bioinformatics training program, this course will be offered alternatively as the problem-based learning course and the advanced graduate seminar in bioinformatics (both concurrent with MBB 829). Prerequisite: Permission of the instructor.

Database and Knowledge-base Systems

CMPT 843

An advanced course on database systems which focuses on data mining and data warehousing, including their principles, designs, implementations, and applications. It may cover some additional topics on advanced database system concepts, including deductive and object-oriented database systems, spatial and multimedia databases, and database-oriented Web technology.

Special Topics in Database Systems

CMPT 884

AREA V - Graphics, HCI, Vision, and Visualization

Geometric Modelling in Computer Graphics

CMPT 764

Advanced topics in geometric modelling and processing for computer graphics, such as Bezier and B-spline techniques, subdivision curves and surfaces, solid modelling, implicit representation, surface reconstruction, multi-resolution modelling, digital geometry processing (e.g., mesh smoothing, compression, and parameterization), point-based representation, and procedural modelling. Students with credit for CMPT 464 or equivalent may not take this course for further credit. Prerequisite: CMPT 361, MACM 316.


CMPT 767

Advanced topics in the field of scientific and information visualization are presented. Topics may include: an introduction to visualization (importance, basic approaches and existing tools), abstract visualization concepts, human perception, visualization methodology, 2D and 3D display and interaction and their use in medical, scientific, and business applications. Students with credit for CMPT 878 or 775 may not take this course for further credit. Prerequisite: CMPT 316, 461or equivalent (by permission of instructor).

Multimedia Systems

CMPT 820

This seminar course covers current research in the field of multimedia computing. Topics include multimedia data representation, compression, retrieval, network communications and multimedia systems. Computing science graduate student or permission of instructor. Equivalent Courses: CMPT880

Computational Vision

CMPT 822

A seminar based on the artificial intelligence approach to vision. Computational vision has the goal of discovering the algorithms and heuristics which allow a two dimensional array of light intensities to be interpreted as a three dimensional scene. By reading and discussing research papers - starting with the original work on the analysis of line drawings, and ending with the most recent work in the field - participants begin to develop a general overview of computational vision, and an understanding of the current research problems.

Illumination in Images and Video

CMPT 828

Explores current research in the field of imaging, computer vision, and smart cameras that aims at identifying, eliminating, and re-lighting the effects of illumination in natural scenes. One salient direction in this research is the identification and elimination of shadows in imagery. The topics touched on in the endeavour include physics-based image understanding, image processing, and information theory. Students in vision and in graphics should be interested in the material in this course.


CMPT 626 Graduate Co-op Practicum I

CMPT 627 Graduate Co-op Practicum II

CMPT 628 Graduate Co-op Practicum III

CMPT 880 Special Topics in Computing Science

CMPT 889-3 Special Topics in Interdisciplinary Computing
This course may be offered as Computers in Medicine, Computers in Music, Computers in Biology etc.

CMPT 894-3 Directed Reading