The goal of this class is to help you learn how to think about algorithms. We'll cover the `greatest hits' of computer science: a selection of the most important fundamental concepts in the design and analysis of algorithms and data structures, including correctness, complexity analysis, and NP-completeness. You should already be a fluent programmer in a C-like language, understand some basic data structures (linked lists, binary trees, and hash tables, as in CS 515), and have some experience writing proofs (as in Math 531 and CS 659).
In the fall of 2012, we will meet for lecture on Mondays and Wednesdays, 1:10-2:30pm in Kingsbury N133, and for recitation on Fridays, 1:10-2:30pm, also in N133.
Bug reports and suggestions regarding assignments are always appreciated.