This course emphasizes the basic algorithmic techniques for efficient algorithms, and the analytical tools for understanding them. There will be no programming. The text book of Cormen et al [CLRS] will be followed fairly closely. We will distribute lecture notes when we provide alternative material.
The following is a rough schedule. Throughout the semester, we will specify the relevant sections of the individual chapters to be read.
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 |
---|---|---|
0 | Background | Read at leisure Chap 1,2. |
1 | Recurrences | Chap 3,4. Also Appendix A. |
2 | Probabilistic Analysis | Chap 5. Appendix C. |
3 | Quick Sort and Medians | Chap 7,9. |
4 | Hashing | Chap 11. |
5 | Binary Search Trees (Randomized, Balanced) | Chap 12, 13. |
6 | Dynamic Programming | Chap 15. |
7 | Greedy Methods | Chap 16. |
9 | Amortization | Chap 17. |
10 | Advanced Data Structures | A selection from Chaps 18-21. |
11 | Basic Graph Algorithms | Chap 22, 23. |
12 | Shortest Paths | Chap 24. |
13 | NP Completeness | Chap 34, 35. |