Topics: Algorithms, Insertion sort, analyzing Algorithms, designing Algorithms, growth of functions, asymptotic notation, maximum-subarray problem, Strassen’s algorithm, Probabilistic Analysis, Randomized Algorithms, hiring problem, Indicator random variables, Heapsort, heaps, heapsort algorithm, Priority queues, quicksort, Radix sort, Counting sort, Bucket sort, Data Structures, Hash Tables, has function, open addressing, Perfect hashing, Data Structures, sorting order statistics, Binary Search Trees, Red-Black Trees, Augmenting Data Structures, Dynamic Programming, Greedy Algorithms, Amortized Analysis, B-Trees, Fibonacci Heaps, van Emde Boas Trees, Graph Algorithms, Minimum Spanning Trees, Single-Source Shortest Paths, All-Pairs Shortest Path, maximum flow, Multithreaded Algorithms, Matrix Operations, linear programming, polynomials, Number-Theoretic Algorithms, String Matching, Computational Geometry, NP-Completeness, Polynomial time, Approximation Algorithms