CS 758/858: Algorithms

Professor Wheeler Ruml
TA Devin Thomas

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.

In fall 2024, we will meet for lecture on Tuesdays and Thursdays 11:10am-12:30pm in Kingsbury N121 and for recitation on Fridays 1:10-2pm in Kingsbury N101. This class is usually offered in both fall and spring.

Here are the raw student reviews from 2023.

Handouts

Assignments

All binaries are for x86_64 Linux (like agate.cs.unh.edu).

Bug reports and suggestions regarding assignments are always appreciated.

Lectures

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