Graduate Courses

Winter 2021 CPSC 536F - Algorithmic Game Theory, Hu Fu

We introduce basic concepts in game theory and mechanism design, and then proceed to use algorithmic tools to investigate theoretical and practical problems in their study. These problems include the Price of Anarchy (a measure of the performance of systems participated by autonomous agents without a central authority) and the design and analysis of simple and pratical mechanisms/markets. Along the way, we will pick up algorithmic techniques that have connections to other branches of (theoretical) computer science and optimization.

Course Webpage

Winter 2021 CPSC 540 - Advanced Machine Learning, Mark Schmidt

Topics will (roughly) include deep learning, generative models, latent-variable models, Markov models, probabilistic graphical models, and Bayesian methods.

Course Webpage

Winter 2021 CPSC 531F - Algebraic Method, Joel Friedman

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.

Course Webpage

Fall 2020 (Winter term 1) CPSC 536M - Optimization Theory, Michael Friedlander

Fall 2020, CPSC 501 - Introduction to Theory of Computation, Joel Friedman

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.

Winter 2020 CPSC 536S Submodular Optimization, Bruce Shepherd

We develop the basic properties of submodular functions and then present both classical methods and recent trends. Topics include: algorithms for unconstrained submodular maximization and minimization, polymatroids, local greedy algorithms, multilinear extensions and pipage rounding, Lovasz Extension and convex minimization, matroid constraints, multi-agent optimization, and many applications.

Course Webpage

2019/20 CPSC 531F Tools for Modern Algorithms, Hu Fu

This course covers a few topics in algorithm analysis. Topics we plan to cover include: Rounding of linear programs in the design of approximation algorithms; Randomized rounding of semidefinite programs; Metric embedding; Optimal stopping time problems

536S Combinatorial Optimization (2019)

Course Webpage

531H Machine Learning Theory (2018)

Course Webpage

536E Graph Drawing (2018)

Course Webpage

542F Convex Analysis and Optimization (2017)

Course Webpage

536F Computational Perspectives on Economic Questions (2017)

Course Webpage

536N Algorithms That Matter (2017)

Course Webpage

536N Randomized Algorithms (2015)

Course Webpage

536F Algorithmic Game Theory (2016)

Course Webpage

Recurring Graduate Courses

500 Fundamentals of Algorithm Design and Analysis

This course is an introductory graduate course on algorithms, focusing on both design (including associated data structures) and analysis (including both exciency and correctness). It covers material that lays the foundation for several other more advanced graduate courses (of both a theoretical and non-theoretical nature).

501 Introduction to Theory of Computation

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.

506 Complexity of Computation

This course covers a core of topics in complexity theory, together with a sample of recent results. The core includes the standard framework of machine-based complexity: models for computers, complexity classes and hierarchy theorems, reductions and completeness, a tour of the most common complexity classes, such as P, NP, PSPACE etc., together with parallel and probabilistic computer models and their associated complexity classes.

532L Foundations of Multiagent Systems

This course examines the mathematical and computational foundations of modern multiagent systems, with a focus on game theoretic analysis of systems in which agens cannot be guaranteed to behave cooperatively.

545 Algorithms in Bioinformatics

The purpose of this advanced course in bioinformatics is to introduce the students to the algorithms and probabilistic methods that are currently being used to capture and analyze the complexities of today’s biological data.