DESIGN AND ANALYSIS OF ALGORITHMS

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 flow, computational geometry, number-theoretic algorithms, polynomial and matrix calculations, caching, and parallel computing.