Data structures: priority queues, binary search trees, height-balanced trees, heaps, hash tables. Searching and sorting techniques: heapsort, quicksort, sorting in linear time, medians and order statistics. Design and analysis techniques: dynamic programming, greedy algorithms. Graph algorithms: elementary graph algorithms (breadth-first search, depth-first search, topological sort, connected components, strongly connected components), minimum spanning tree, shortest path.
Prerequisite: CS540 and CS600