Instructor: Kamesh Munagala and Alex Steiger
Course Coordinator: Alex Chao
Lectures: W/F 1:25 - 2:40 (French 2231)
Recitation: Mondays; please check your section for details
This course will cover the basic techniques in algorithm design, including greedy algorithms, divide-and-conquer, amortization, dynamic programming, hashing, randomization, and NP-Completeness. The techniques will be covered in-depth, and the focus will be on modeling and solving problems using these techniques.
We will assume prior knowledge of discrete mathematics, probability, and programming. You should meet us if you do not have this background. The emphasis is on abstraction, design, and analysis.
Algorithms by S. Dasgupta, C. Papadimitriou, and U. Vazirani. (required)
Algorithm Design by J. Kleinberg and E. Tardos. (optional; link is to the SLIDES)
Algorithms by Jeff Erickson (free online text)