1. Foundation
    1. What's more important than performance
      1. Correctness
      2. Programmer Time
      3. Maintainbility
      4. Robustness
      5. User-Friendliness
    2. Random-Access machine Model
      1. No concurrent operations
      2. Each instruction takes a constant amount of time
    3. Notation
      1. Θ
      2. O
      3. Ω
      4. o
    4. Common Function
    5. Recurrence Analysis
      1. Substitution Method
        1. 1. [Guess] the form of the solution
        2. 2. [Verify] by mathematical induction
      2. Recursion-Tree Method
        1. Topic
      3. Master Method
        1. Topic
        2. Topic
    6. Probabilistic Analysis
  2. Divide-and-Conquer
    1. Divide Paradigm
      1. 1. [Divide] the problem into subproblems
      2. 2. [Conquer] subproblems by solving them recursively
      3. 3. [Combine] subproblems' solutions
      4. Topic
    2. Examples
      1. Merge Sort
      2. Binary Search
      3. Fibonacci Numbers
      4. Matrix Multiplication
      5. Closest Pair of Points
  3. Sorting Algorithm
    1. Quick Sort
    2. Counting Sort
      1. Topic
    3. Radix Sort
      1. Idea
        1. Topic
      2. Correctness
        1. Topic
      3. Analysis
    4. Bucket Sort
    5. Sorting Network
  4. Dynamic Programming
  5. Greedy Algorithm
  6. Amortized Analysis, Heaps
  7. Graph Algorithm
  8. String Match
  9. NP-Completeness
  10. Approximation Algorithm