Courses Offered
Below is a list of upper-level Theory courses being taught in this Fall and Winter. More information about these courses and others, including prerequisite information, can be four on the EECS courses page of the Michigan Engineering Bulletin.
Fall 2024
EECS 475: Introduction to Cryptography
Instructor: Ke Wu
Covers fundamental concepts, algorithms, and protocols in cryptography. Topics: ancient ciphers, Shannon theory, symmetric encryption, public key encryption, hash functions, digital signatures, key distribution. Emphasizes attack models, precise definitions of security, reductions, and proof techniques.
EECS 477: Introduction to Algorithms
Instructor: Euiwoong Lee
Fundamental techniques for designing efficient algorithms and basic mathematical methods for analyzing their performance. Paradigms for algorithm design: divide-and-conquer, greedy methods, graph search techniques, dynamic programming. Design of efficient data structures and analysis of the running time and space requirements of algorithms in the worst and average cases.
EECS 498: Advanced Data Structures
Instructor: Seth Pettie
EECS 498/CSE 598: Algorithms for Machine Learning and Data Science
Instructor: Michał Dereziński
This course will introduce algorithmic and theoretical foundations of data science, with a focus on applications to machine learning. With the emergence of machine learning and data science, as well as the ever-increasing data sizes, providing theoretical foundations for the computational complexity of data manipulation algorithms is becoming increasingly important. The course will cover several important algorithms which use randomization and linear algebra to construct compressed data representations and efficiently perform prediction, optimization and inference tasks for big data and ML. We will introduce randomized dimensionality reduction, sketching, and stochastic optimization, among others, and provide the tools needed to design and analyze algorithms that rely on these concepts. Algorithmic paradigms for big data The course will delve into topics in linear algebra, such as matrix multiplication and singular value decomposition, as well as in probability, such as expectation, independence and concentration of random variables.
CSE 572: Randomness and Computation
Instructor: Nikhil Bansal
Fundamentals of randomness and its pervasive use in computer science, including the probabilistic method, the design and analysis of algorithms, computational complexity, cryptography, combinatorics, logic and proof systems, and related topics.
CSE 575: Advanced Cryptography
Instructor: Paul Grubbs
A rigorous introduction to the design of cryptosystems and to cryptanalysis. Topics include cryptanalysis of classical cryptosystems; theoretical analysis of one-way functions; DES and differential cryptanalysis; the RSA cryptosystem; ElGamal, elliptic, hyperelliptic and hidden mononomial cryptosystems; attacks on signature schemes, identification schemes and authentication codes; secret sharing; and zero knowledge.
CSE 598: Foundations of Fairness in Machine Learning
Instructor: Ben Fish
Winter 2025
EECS 475: Introduction to Cryptography
Instructor: Mahdi Cheraghchi
Fundamental techniques for designing efficient algorithms and basic mathematical methods for analyzing their performance. Paradigms for algorithm design: divide-and-conquer, greedy methods, graph search techniques, dynamic programming. Design of efficient data structures and analysis of the running time and space requirements of algorithms in the worst and average cases.
477: Introduction to Algorithms
Instructor: Euiwoong Lee
Fundamental techniques for designing efficient algorithms and basic mathematical methods for analyzing their performance. Paradigms for algorithm design: divide-and-conquer, greedy methods, graph search techniques, dynamic programming. Design of efficient data structures and analysis of the running time and space requirements of algorithms in the worst and average cases.
CSE 574: Computational Complexity Theory
Instructor: Mahdi Cheraghchi
Fundamentals of the theory of computation and complexity theory. Computability, undecidability, and logic. Relations between complexity classes, NP-completeness, P-completeness, and randomized computation. Applications in selected areas such as cryptography, logic programming, theorem proving, approximation of optimization problems, or parallel computing.
CSE 598: Design and Analysis of Algorithms
Instructor: Quentin Stout
Design of algorithms for nonnumeric problems involving sorting, searching, scheduling, graph theory and geometry. Design techniques such as approximation, branch-and-bound, divide-and-conquer, dynamic programming, greed and randomization applied to polynomial and NP-hard problems. Analysis of time and space utilization.
CSE 598: Machine Learning Theory
Instructor: Wei Hu
CSE 598: Graph Algorithms
Instructor: Nicole Wein