Tentative Course Outline
- Topic: Introduction to algorithm analysis and asymptotic notation
- Reading: Chapters 1, 2 and 3 of CLR (Read the appendix covering mathematical
background if you need to)
- Topic: Analysis of algorithms using sums
- Reading: Chapter 6
- Example: Building a heap, 7.3
- Topic: Divide and conquer, and recurrences
- Reading: Chapter 5, Chapter 30, Chapter 9
- Example: Divide and conquer algorithm for multiplying polynomials
- Example: Fast Fourier transform (Skipping this semester)
- Example: Linear time selection algorithm
- Example: T(n)= T(n - sqrt{n}) + f(n)
- Topic: Information theoretic lower bounds
- Reading: Chapter 9
- Time complexity of a problem
- Example: Searching lower bound
- Example: Sorting lower bound
- Example: Lower bound for element uniqueness (not in the book,
skipping this semester)
- Example: n-1 lower bound for find the maximum
- Example: 3n/2 lower bound for computing median (not in the book)
- Topic: Average-case analysis, randomized algorithms, and bounding
tails of distributions
- Reading: Chapters 5, 7, 9, 11, 12, and 13, and Handout on randomized
algorithms.
- Linearity of expectations
- Example: Hiring Problem
- Example: Quicksort, Expected linear time selection, Randomly
built Search trees
- Example: Expected time for insert in closed addressed hash
table
- Example: Expected time for insert in open addressed hash table using
uniform hashing
- Example: Universal Hash Functions
- Example: Analysis of streaks in Bernoulli trials
- Example: High confidence analysis of Quicksort, Expected linear
time selection, Randomly built Search trees
- Example: Miller-Rabin Primality Algorithm
- Example: Randomized Monte-Carlo Min-Cut Algorithm (not in the book,
skipping this semester)
- Las Vegas vs. Monte Carlo algorithms
- Example: Average case information theoretic lower bound for
sorting
- Example: Randomized lower bound for sorting using Yao's technique
- Topic: Greedy algorithms
- Reading: Chapter 16
- Example: Max independent set in an interval graph
- Example: Coloring an interval graph (skipping this semester)
- Example: Huffman Coding (skipping this semester)
- Matroids
- Example: Weighted unit tasks as an application of matroids (skipping
this semester)
- Example: Kruskal minimum spanning tree algorithm as an application
of matroids
- Recommended Problems: 16-1, 16-2
- Topic: Dynamic programming
- Reading: Chapter 15
- Suggested Reading: A paper
on how to design dynamic programming algorithms for some problems without
using recursion. (postscript)
- Example: Fibonacci numbers
- Example: Longest Common Subsequence
- Example: Matrix Chain Multiplication (Skipping this semester)
- Example: Minimum weight binary search tree
- Example: Longest Increasing Subsequence (problem 16.5.3)
- Example: Subset sum
- Example: Knapsack
- Topic: Amortization
- Reading: Chapters 17 and 21
- Example: Multipop
- Example: Incrementing Binary Counter
- Example: Dynamic Table Expansion
- Example: Union-Find (Chapter 21) (Skipping this semester)
- Recommended Problems: 17.3-3, 17.4-3, 17-2, 17-3, 21.2-3, 21.3-4,
21-3
- Topic: Graph Search Algorithms
- Reading: Chapters 22, 23, 24
- Example: Prims Algorithm
- Example: Dijkstra's Algorithm
- Example: Bellman Ford
- Example: Topological Sort/Shortest Paths in a DAG
- Example: Depth first search (skipping this semester)
- Example: Strongly connected components (skipping this semester)
- Topic: Max flow
- Reading: Chapter 26
- Example: Ford-Fulkerson algorithm
- Example: Maximum Matching
- Example: Karp-Edmonds Algorithms
- Poly-time, pseudo poly-time, and strong poly-time
- Example: Push-Relabel algorithms (probably skipping this semester)
- Linear Programming
- Example: Writing network flow as a linear program
- Simplex greedy algorithm vs. divide and conquer interior point methods
- Duality
- Topic: NP-completeness and Reductions
- Reading: Chapter 34
- Example: sorting <= TSP
- Example: CNFSAT <= SAT
- Example: CNFSAT <= 3SAT
- Example: 3SAT <= Vertex Cover
- Example: 3SAT <= Subset Sum
- Example: Gap reduction from Hamiltonian cycle to TSP
- Topic: Approximation algorithms
- Reading: Chapter 35
- Example: Vertex Cover
- Example: Traveling Salesman
- Example: Set Cover
- Example: Turning dynamic programs into PTAS for subset selection
problems (reading)
(May be skipping this semester)
- Example: Subset Sum as an example of the above technique (May be
skipping this semester)
- Topic: Online Algorithms
- Reading: Introduction to competitive analysis (paper1
paper2)
- Reading: Introduction to online scheduling (paper)
- Reading: Speed scaling for weighted flow (paper)