6.8

2 Outline

This outline will be mostly correct in terms of topics and ordering. Times are hard to estimate.

1. Tools and techniques.

Review: ADTs (immutable/mutable), algorithm analysis, order notations.

Review and update: persistence, recurrences, sequences, sets, maps.

Introduction to OCaml.

2. Queues of various flavours.

Simple queues. Amortized analysis. Banker’s method, physicist’s method. Lazy evaluation and memoization.

Priority queues: Braun heaps, array-based heaps, maxiphobic heaps.

3. Maps on ordered domains.

A unified approach to balanced binary search trees: treaps, AVL, weight-balanced, red-black. Binary tries.

4. Text searching and compression.

A unified approach to string matching: prefix preprocessing, Boyer-Moore, KMP. General tries. Compressed tries. Suffix tries. Suffix arrays. Lempel-Ziv compression. Other topics if time permits (HAMT, ternary search trees, Burrows-Wheeler transform).

5. Hashing (the virtues of imperfection).

Chaining. Open addressing. Cuckoo hashing. Perfect hashing.