Analysis: -- Proofs and Induction -- Asymptotics -- Summation Techniques -- Solving Recurrences -- Master Theorem -- Real Induction REFERENCE: Chap 3, and my Notes on Recurrences.
Search Trees -- AVL Trees -- (a,b)-Trees) REFERENCE: Chap 9. Read all but Section 9.5 (Red-Black Trees) Sorting Chapter -- QuickSort -- QuickSelect -- Lower Bound for Sorting -- Basic Probability REFERENCE: Chap 10. Read 10.3, 10.4, 10.7.
(1) Short questions (e.g. what is the primitive 8th root mod 17?) (2) Multiple choice questions (including True/False). In such questions, a WRONG answer may carry a negative score, while not answering the question gives you a zero score. (3) Algorithmic Simulation. These just tests your knowledge of algorithms, so that you can mechanically carry out the steps. E.g. given a specific heap, show the intermediate transformations of the heap when you remove the minimum item. (4) Programming questions. This will NOT be part of our midterm. (5) Proofs. You should know proofs by induction, by contradiction, by case analysis. Slightly harder is "real induction". (6) Creative problems. You need to use what you know and apply it to solve some problems we pose.
(1) From TextBook: emphasis is on material that we actually
lectured on. In general, skip Java-specific material as
we want to focus on the mathematical substance behind them.
Chapter 3: Analysis. read all sections.
Chapter 4: Linear Structures. Skip 4.1.3, 4.2.3, 4.2.4,
4.4.4, 4.5.*
Chapter 5: More Linear Structures. Skip 5.4.* and later.
Chapter 6: Trees. Skip 6.3.5. Skip 6.4.*.
Chapter 7: Priority Queues. Skip 7.2.* and 7.4*.
Chapter 8: Dictionaries. Skip 8.7.
(2) From Class Notes on FFT Multiplication:
Arithmetic modulo M
DFT and its inverse
FFT Algorithm
Convolution Theorem
(3) From Recurrence Class Notes and Lectures:
Rote Method
Basic Sums (section 4 of Class Notes)
Standard Form and Summation Techniques (section 5)
Domain and Range Transformation (sections 6, 7)
Master Theorem (section 8.2)