This course presents fundamental techniques for designing efficient computer algorithms, proving their correctness, and analyzing their complexity. General topics include graph algorithms, sorting, searching, and basic algorithm design paradigms (such as divide-and-conquer, dynamic programming, and greedy algorithms), lower bounds, and NP-completeness.

**Instructor:**Arkady Yerukhimovich (arkady AT cs)**Class Time:**MTWThF, 9:30 – 10:50**Office Hours:**Thursday 12:20 (in class room)**Class Room:**CSIC 1122**Text Book:**Jon Kleinberg and Eva Tardos, Algorithm Design, Addison-Wesley, 2005.

- Homework 1 Due: Jul. 20
- Homework 2 Due: Jul. 27
- Homework 3 Due: Aug. 3
- Homework 4 Due: Aug. 10
- Homework 5 Due: Aug. 17
- Homework 6 Due: Aug. 23

- Midterm Exam - Monday, August 6 9:30-10:50 In CSIC 1122
- Final Exam - Friday, August 24 9:30-10:50 In CSIC 1122