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.
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.
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.
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.
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)
531H Machine Learning Theory (2018)
536E Graph Drawing (2018)
542F Convex Analysis and Optimization (2017)
536F Computational Perspectives on Economic Questions (2017)
536N Algorithms That Matter (2017)
536N Randomized Algorithms (2015)
536F Algorithmic Game Theory (2016)
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.