CPS 330: Algorithm Design

Fall Semester, 2021 (also Fall '19, '18, Spring '15 - '14, '11 - '06)

Basic Information

Instructor: Kamesh Munagala

Course Coordinator: Kate O'Hanlon (cco9)

Lectures: W/F 1:45 - 3:00 (LSRC B101)

Recitation: Mondays; please check your section for details

COVID-19 Note: Attendance to the lectures and recitations is optional. We will record the lectures, and when possible, post slides for recitations.


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.

I will assume prior knowledge of discrete mathematics, probability, and programming. You should meet me if you do not have this background. The emphasis is on abstraction, design, and analysis and NOT on programming.


Algorithms by S. Dasgupta, C. Papadimitriou, and U. Vazirani. (required)

Algorithm Design by J. Kleinberg and E. Tardos. (optional; link is to the SLIDES)