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.

Courses in Other Departments

MATH 523 Combinatorial Optimization

Combinatorial Optimization provides a thorough treatment of linear programming and combinatorial optimization. Topics include network flow, matching theory, graph algorithms, and approximation algorithms for NP-hard problems. The focus is on key mathematical ideas leading to useful models and algorithms, rather than on data structures and implementation details.