6.046J | Spring 2012 | Undergraduate

Design and Analysis of Algorithms

Course Description

Techniques for the design and analysis of efficient algorithms, emphasizing methods useful in practice. Topics include sorting; search trees, heaps, and hashing; divide-and-conquer; dynamic programming; greedy algorithms; amortized analysis; graph algorithms; and shortest paths. Advanced topics may include network …
Techniques for the design and analysis of efficient algorithms, emphasizing methods useful in practice. Topics include sorting; search trees, heaps, and hashing; divide-and-conquer; dynamic programming; greedy algorithms; amortized analysis; graph algorithms; and shortest paths. Advanced topics may include network flow, computational geometry, number-theoretic algorithms, polynomial and matrix calculations, caching, and parallel computing.
Learning Resource Types
Problem Sets with Solutions
Exams with Solutions
Lecture Notes
A directed graph with three sources, three sinks (two of which are distinct), and several other nodes.
An instance of the multi-commodity flow problem. This could be used to represent the transport of emergency relief supplies after a natural disaster. See Lecture 13 for more information. (Image courtesy of Ben Zinberg.)