**Course** Description: | The design, analysis, implementation, and evaluation of the fundamental structures for representing and manipulating data: lists, arrays, trees, tables, heaps, graphs, and their memory management. |

**Topical Outline:** | 1. Mathematic Background: finite and infinite series, logs, powers, exponents,
order notation, recurrence relations
2. Analysis of Algorithms: Growth rate analysis, expected-case analysis
3-10 For each of the following Abstract Data Types (ADTs) we define the ADT,
discuss various implementation strategies and optimizations, and analyze
running times and memory requirements
3. Lists: Stacks, Queues, Linked, Doubly Linked, Recursion v. Iteration
4. Trees: Binary, Ordered, Traversals, Scans
5. Arrays: Contiguous, Linked, Sparse
6. Strings: compression, searching
7. Sets: lists, binary search trees, binary and interpolation search, optimal trees
8. Dynamic Dictionaries: AVL, 2-3, B-tree, Red-Black, (a,b)-trees
9. Sets of Digital Data: bit vectors, tries, hashing
10. Sets with Special Operations: priority queues, heaps, quad trees
11. Memory Managment |