The following reading recommendations will grow with the weekly lecture and based on recitation feedback. 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). Even learning the few buzz words on the topic will give you the ``heads up'' for understanding the lectures. We encourage doing exercises on your own: a paper and pencil is an important accessory in reading our notes! We would be happy to discuss your solutions or difficulties in person or in recitation. CHAPTER 1: INTRODUCTION Most of this chapter is for general orientation. However, the asymptotic notation in Section 8 must be mastered. Also, the Comparison Tree Model in Section 3, and the related Information Theoretic Bound in Section 5 is required. Use Appendix A for general reference in this course: But we suggest looking over the Appendix once, to familiarize yourself with some basic mathematical notations and concepts that we will use. CHAPTER 2: RECURRENCES Read the following sections: 1. Simplification (easy) 2. Karatsuba Multiplication (fun) 3. Rote Method (easy) 4. Real Induction (tough going) 5. Basic Sum (use as reference) 6. Standard Form (very useful) 10.2 Master Theorem (moderate) The proof of Master Theorem uses two techniques from the following sections: 7. Domain Transform (easy) 8. Range Transform (easy) CHAPTER 3: BALANCED SEARCH TREES (updated Oct 8) 1. Read casually Sections 1 and 2. Be familiar with the definitions of Dictionary and Priority Queues (p. 4). 2. Read Sections 3: this section is essential, but it is mostly a review of basic Binary Search Trees (BST). 3. Read Section 4: AVL Trees. 4. Read Section 5: (a,b)-Trees. CHAPTER 4: PURE GRAPH ALGORITHMS (updated Oct 13) 1. Read casually Sections 1. 2. Read Section 2 for overview. Some of the concepts are not needed, so use it for later reference. (Appendix in CHAPTER 1 also has some graph notations) 3. Sections 3 is easy background on graph representation. 4. Sections 4 and 5 is the heart of this chapter, on BFS and DFS. 5. Sections 6 and 7 are slightly more advance, and we will cover some selection from here. CHAPTER 5: GREEDY METHOD (updated Oct 26) Read Sections 1,2,3,4,6. Topics: linear bin packing, activities selection, Huffman code algorithm, dynamic Huffman code algorithm, Minimum spanning tree You may skip Section 5 (on matroids). CHAPTER 6: AMORTIZATION METHOD (updated Nov 16) Read Sections 1,2 and 4-7 and 9. In particular, you do not need to read the analysis of Splay Trees. But we like you to understand its application to convex hulls. For Fibonacci heaps, you need to know the amortized complexity bounds when Fibonacci heaps are applied to Prim's algorithm. CHAPTER 7: DYNAMIC PROGRAMMING (prelim guide) Study Sections 1, 2 and 4. We recommend reading Section 3 (more lightly). CHAPTER 14: MINIMUM COST PATHS Just read sections 3 (Dijstra) and 6 (Floyd Warshall). CHAPTER 30: NP-COMPLETENESS Read all of it. Focus on how to do reducibility.