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).
|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.|
|5||Binary Search Trees (Randomized, Balanced)||Chap 12, 13.|
|6||Dynamic Programming||Chap 15.|
|7||Greedy Methods||Chap 16.|
|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.|