Math 176 - Advanced Data Structures
Final Exam Information

Problem Review Session: Wednesday, December 6, 12:0-1:30, Center Hall, Room 214.

Practical issues: Please bring pencils, student ID, and a single-sided sheet, 8.5x11, of notes. It is recommended, but not required, that the notes be your own handwritten material. Paper will be supplied; you do not need a blue book. You may not use the text book or a calculator during the exam. You must have your own sheet of notes: this cannot be shared with a neighbor. You should expect the final to take most or all of the allotted three hours.

Types of Problems. Refer to the midterm study sheet for the types of problems that might be expected. The final exam is cumulative and will contain questions from the entire quarter. In particular, expect to see asymptotic analysis questions on big-O, little-o, Omega, Theta. A list of topics from the midterm and before can be found in the midterm study sheet.
The basic rule on what can be included in problems on the final: any topic covered in class, or on any of the assignments.

Here is a fairly complete list of the topics covered since the midterm. All of these, except for inverted lists and hash maps and search engine algorithms are also covered in the textbook. You should also know the material in the textbook on these topics; except for the two exceptions of red-black trees and deterministic skip lists. (Red-black trees were covered only very cursorily in this class, and for deterministic skip lists you do not need to know the deterministic algorithm discussed in the textbook.)

• Leftist heaps, skew heaps.
• Disjoint set ADT. Union-find. Union by size/rank. Path compression.
• Amortized costs analyses.
• Inverted lists. Hash Maps, Search engine algorithms.
• Skip lists. Randomized skip lists. Deterministic skip lists (deterministic skip lists were not covered in complete detail, but you should be able to discuss their linked-list representation, and the relationship with B-trees).
• Red-black trees. You do not need to know the full "insert" algorithm. You should know they are height O(log n) BST's.
• Treaps.
• BST's under randomly ordered insertions.
• Huffman codes. Prefix codes. Trie representation of prefix codes. Huffman's algorithm.   Sample problem available.

Proofs. I do not yet know if there will be proofs on the final exam. If I can make up reasonable problems that test your understanding of the proofs presented in class, then I will do so. For instance, you might have to give a proof that is a mild variation of a proof from the lectures or homework assignments. Two possible examples: (1) prove facts about the relationship between the height of a binary tree and the number of nodes in the tree. (2) describe an appropriate potential function for the analysis of amortized runtimes.
The best way to prepare for these kinds of problems is to understand the proofs presented in the course, or on the homework problems.