CS 758/858: Algorithms
Professor Wheeler Ruml
TA Tianyi Gu
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
Student who have taken this class generally report that it was crucial
for performing well during high-stakes coding interviews.
For fall 2018, we met for lecture on Tuesdays and Thursdays
11:10am-12:30pm in Kingsbury N101 and for recitation on Fridays
11:10-noon in N121. This class is anticipated to be offered every
fall semester for the foreseeable future.
All binaries are for 64-bit x86 Linux (like agate.cs.unh.edu).
- Asst 14: handout.
- Asst 13: handout.
- Asst 12: handout.
11: handout, skeleton, harness, reference.
random routes utility,
nearest nodes utility. Sample
data are in ~cs758/data/asn10 on agate.
9: handout, skeleton, testing
harness, reference, slow
reference, sample images.
- Asst 8: handout.
7: handout, skeleton, harness, sample
grammars, reference, CNF
grammar converter, more
6: handout, skeleton, testing
5: handout, skeleton, testing
Sample data is available here and on
agate in ~cs758/data/asn5.
4: handout, skeleton, testing
harness, reference (doesn't implement rbtree!)
3: handout, skeleton, testing
Sample data is available on agate in ~cs758/data/asn3.
- Asst 2: handout.
1: handout, skeleton, makefile, testing
solution. Sample data is on agate in ~cs758/data/asn1.
Bug reports and suggestions regarding assignments are always
Slides are posted on a `best effort' basis in case you'd like to
review - don't rely on my timeliness!