1. Mathematical Foundations
    1. Asymptotic Notation
    2. Induction
    3. Sums
    4. Recurrences
  2. Comparison Problems
    1. Searching
      • Linear Search
      • Binary Search
    2. Selection
      • "Quicksort"-like selection
      • Worst-case algorithm for selection
    3. Sorting
      • Insertion Sort
      • Selection Sort
      • Merge Sort
      • Quick Sort
      • Bucket Sort
      • Radix Sort
  3. Data Structures
    1. Stacks
    2. Queues
    3. Deques
    4. Priority Queues
      • Heaps
      • Fibonacci Heaps
    5. Dictionaries
      • Search Trees
      • Randomized Search Trees
      • 2-3 Trees
      • Hashing
    6. Disjoint Sets
  4. Graph Algorithms
    1. Representations of Graphs
    2. Searching a Graph
    3. Topological Sort
    4. Shortest Paths
      • Dags
      • Bellman-Ford algorithm
      • Dijkstra's algorithm
      • Johnson's algorithm
    5. Minimum Spanning Tree
      • Prim's algorithm
      • Kruskal's algorithm
  5. Design Techniques
    1. Divide and Conquer
    2. Dynamic Programming