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.
Professor: Clyde Kruskal (kruskal AT cs)
Teaching Assistant: Arkady Yerukhimovich (arkady AT cs) Office Hours: Wed. 1:00-4:00 (in TA room)
Class Time: Tu, Th 2:00 – 3:15
Class Room: CSIC 2107
Text Book: Jon Kleinberg and Eva Tardos, Algorithm Design, Addison-Wesley, 2005.