Course Outline

  1. Introduction to Analysis of Algorithms
    1. Overview of algorithms
    2. Analyzing algorithms
    3. Designing algorithms
    4. Proofs
  2. Growth of Functions and Notations
    1. Big Oh, Little Oh, Big Omega, Little Omega, and Big Theta notations
    2. NP-Complete Problems
    3. Approximation Algorithms
  3. Recurrences
    1. Iteration method
    2. Recursion-tree method
    3. Master method
  4. Sorting in Linear Time
    1. Lower bounds for sorting
    2. Counting sort
    3. Radix sort
  5. Medians and Order Statistics
    1. Minimum and maximum
    2. Selection in expected linear time
    3. Selection in worst-case linear time
  6. Greedy Algorithms
    1. Elements of the greedy strategy
    2. Huffman codes
  7. Elementary Graph Algorithms
    1. Representations of graphs
    2. Breadth-first search
    3. Depth-first search
    4. Topological search
    5. Strongly connected components
  8. Minimum Spanning Trees
    1. Algorithms of Kruskal and Prim
  9. Single-Source Shortest Path
    1. Bellman-Ford algorithm
    2. Single-source shortest paths in directed acyclic graphs
    3. Dijkstra's algorithm
  10. All-Pairs Shortest Paths
  11. Maximum Flow
  12. Distributed Algorithms
    1. Distributed Paradigm
    2. Consensus and Election
Revised 2012