This course will consider the techniques for the design and analysis of efficient algorithms, emphasizing methods useful in practice. Topics will include sorting; search trees, heaps, and hashing; divide-and-conquer; dynamic programming; greedy algorithms; amortized analysis; graph algorithms; and shortest paths. Other topics may include network flow, computational geometry, number-theoretic algorithms, polynomial and matrix calculations, caching, and parallel computing.
- Enrolled students: No students enrolled in this course yet