Fundamental Algorithms, G22.1170
Spring 2003


This course emphasizes the basic algorithmic techniques for efficient algorithms, and the analytical tools for understanding them. There will be no programming. We will distribute lecture notes (Lect 1, Lect 2, etc). If you want to use a textbook, we recommend Cormen, Leiserson, Rivest, Stein [CLRS]. There is usually a good matching chapter in [CLRS] to each of our topics below.

The following outline gives the sequence of lecture topics. Each topic is covered in 1-2 weeks. We do not expect you to read the entire set Lecture Notes (a separate Reading Guide will tell you want is needed)

We strongly suggest reading ahead: this kind of reading does not require full understanding, but gives you a general orientation. Just read as far as you can, starting from the introduction (even 10 minutes of reading just before class would be helpful).
Week TOPIC Chapter, Comments
1 Background Lect 1. Asymptotic Notation must be mastered
2 Recurrences Lect 2. Know the techniques that leads to the Master Theorem
3 Search Trees Lect 3. AVL Trees. (a,b)-Trees. Sorting.
4 Pure Graph Algorithms Lect 4. BFS, DFS, Topological Sort, Strong Components
5 Greedy Algorithms Lect 5. Huffman Tree, MST
6 Amortization Lect 6. Splay Trees, Applications.
7 Dynamic Programming Lect 7. String Problems, Optimal Triangulation
8 Probabilistic Algorithms Lect 8,10. Randomized Search Trees
9 Hashing Lect 11. Basic concepts, Universal hashing
10 Shortest Paths Lect 14. Dijkstra, Floyd-Warshall, Transitive Closure
11 NP-Completeness Lect 30. Basic Concepts of Complexity Theory
NOTES: Week 1 refers to the first lecture on Sep 10. And if we are on schedule, then Week 13 refers to the lecture on Dec 3.