Computer Algorithms Syllabus (Spring 2009)
Week Contents Homeworks
1 Prologue
  - Enter Fibonacci
  - Big-O notation
HW #1
2 Algorithms with numbers
 - Basic arithmetic
 - Modular arithmetic
 - Primality testing
 - Cryptography
 - Universal hashing
¡¡
3 Divide-and-conquer algorithms
 - Multiplication
 - Recurrence relations
 - Mergesort
 - Medians
 - Matrix multiplication
 - The fast Fourier transform
¡¡
4 Decompositions of graphs
 - Why graphs?
 - Depth First search in undirected graphs
 - Depth First search in directed graphs
 - Strongly connected components
¡¡
5 Paths in graphs
 - Distances
 - Breadth First search
 - Lengths on edges
 - Dijkstra's algorithm
 - Priority queue implementations
 - Shortest paths in the presence of negative edges
 - Shortest paths in dags
HW #2
6 Greedy algorithms
 - Minimum spanning trees
 - Huffman encoding
 - Horn formulas
 - Set cover
¡¡
7 Dynamic programming
 - Shortest paths in dags, revisited
 - Longest increasing subsequences
 - Edit distance
 - Knapsack
 - Chain matrix multiplication
 - Shortest paths
 - Independent sets in trees
¡¡
8 Mid-Term Exam ¡¡
9 Linear programming and reductions
 - An introduction to linear programming
 - Flows in networks
 - Bipartite matching
 - Duality
 - Zero-sum games
 - The simplex algorithm
 - Postscript: circuit evaluation
HW #3
10 NP-complete problems
 - Search problems
 - NP-complete problems
 - The reductions
¡¡
11 Coping with NP-completeness
 - Intelligent exhaustive search
 - Approximation algorithms
 - Local search heuristics
¡¡
12 Quantum algorithms
 - Qubits, superposition, and measurement
 - The plan
 - The quantum Fourier transform
 - Periodicity
 - Quantum circuits
 - Factoring as periodicity
 - The quantum algorithm for factoring
¡¡
13 Final Project Presentation ¡¡
14 Final Project Presentation ¡¡
15 Final Project Presentation ¡¡