CS 758/858: Algorithms

Professor Wheeler Ruml
TA William Doyle

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 (including pointers, dynamic memory allocation, and I/O), 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).

Student who have taken this class generally report that it was crucial for performing well during high-stakes coding interviews.

For fall 2019, we will meet for lecture on Tuesdays and Thursdays 8:10am-9:30pm in Kingsbury N101 and for recitation on Fridays 1:10-2pm in Parsons N114. This class is anticipated to be offered during most semesters for the foreseeable future.



All binaries are for 64-bit x86 Linux (like agate.cs.unh.edu).

Bug reports and suggestions regarding assignments are always appreciated.


Slides are posted on a `best effort' basis in case you'd like to review - don't rely on my timeliness!

Other resources

Valid HTML 4.01 Transitional