CS 764: Computational Complexity

University of Waterloo, Winter 2026

Overview

Computational Complexity aims to explore the ultimate limits of what computers can do when they have bounded resources.

This course will give an overview of some of the main themes that have emerged from this line of research. We will do so by seeing some of the foundational results in complexity theory, examining some of the unexpected connections to different areas of mathematics, and discussing a few of the many open problems in the area.

Many of our in-class discussions will be focussed on the standard model of Turing machines. However, since much of modern complexity theory deals with other models of computation, each participant in the class will also choose an area of specialization in which they will explore the main themes of the course in more depth.

Suggested Areas of Specializations

Here is a partial list of possible choices for the specializations:

Non-uniform models of computation

Uniform models of computation

Alternative models of computation

Tentative List of Topics

Some of the main themes that we will explore through the lens of computational complexity in this class include the following:

Components of the Course

The course contains three main components: