Courses

Undergrad Courses

320 Intermediate Algorithm Design and Analysis

Course webpage

Systematic study of basic concepts and techniques in the design and analysis of algorithms, illustrated from various problem areas. Topics include: models of computation; choice of data structures; graph-theoretic, algebraic, and text processing algorithms.

420 Advanced Algorithm Design and Analysis

The study of advanced topics in the design and analysis of algorithms and associated data structures. Topics include algorithms for graph-theoretic; algebraic and geometric problems; algorithms on nonsequential models; complexity issues; approximation algorithms.

421 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.

445 Algorithms in Bioinformatics

Course webpage

Sequence alignment, phylogenetic tree reconstruction, prediction of RNA and protein structure, gene finding and sequence annotation, gene expression, and biomolecular computing.

Grad 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.

Graduate Topics Courses

531H Machine Learning Theory (2018)

536E Graph Drawing (2018)

536F Algorithmic Game Theory (2016)

536F Computational Perspectives on Economic Questions (2017)

536N Algorithms That Matter (2017)

536N Randomized Algorithms (2015)

536S Combinatorial Optimization (2019)

542F Convex Analysis and Optimization (2017)