be familiar with fundamental algorithmic notation and techniques,
given a particular application, be able to decide which algorithm among a set of possible choices is best,
be able to prove correctness and analyze the running time of a given algorithm,
be able to design efficient algorithms for new situations, using as building blocks the techniques learned,
be able to prove a problem is NP-complete using reduction, and
be able to produce results with Latex type-setting software.
Textbook
Required text: Introduction to Algorithms, 3rd Edition, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein.McGraw Hill, 2009.
Available on-line at
On line textbook