![]() |
CS 216 - Data Structures
Readings |
| Class | Month | Day | Topic | Readings (parenthesized reading are optional) |
| 1 | January | 21 | Course Overview, Data Structures and Algorithms, Representing problems, solving problems | Poker Squares, Poker Squares Challenge |
| 2 | 23 | Representing problems, solving problems (cont.) | Cormen et al Ch. 1, link 1 (quote at top), link 2, link 3 | |
| 3 | 25 | (4th Hour Project work) | ||
| 4 | 28 | Stacks and Queues; Array-based stack implementation | 10.1 | |
| 5 | 30 | Stochastic test harnesses; Array-based queue implementation | ||
| 6 | February | 1 | In-class implementation | |
| 7 | 4 | Linked lists: Singly-linked lists; List-based stack implementation; List-based queue implementation | 10.2 | |
| 8 | 6 | Graphs: search problem formulation, directed graphs, breadth-first search, depth-first search | 22.1-22.2, search problems | |
| 9 | 8 | Big-O notation; Algorithmic Strategies: brute-force, greedy | 3.1, Aho et al, Data Structures and Algorithms 1.4, Wikipedia: brute-force, greedy | |
| 10 | 11 | Algorithmic Strategies: Monte Carlo simulation, Poker Squares example | Wikipedia: Monte Carlo simulation | |
| 11 | 13 | Algorithmic Strategies: Monte Carlo simulation, investment example | ||
| 12 | 15 | Search tradeoffs: depth-limited search, iterative deepening depth-first search | ||
| 13 | 18 | Algorithmic Strategies: divide-and-conquer: mergesort, quicksort | Wikipedia: divide and conquer, (e.g. mergesort (2.3.1), quicksort (7.1)) | |
| 14 | 20 | Algorithmic Strategies: numerical approximation | numerical approximation (e.g. secant method, Newton's method, Euler's method) | |
| 15 | 22 | Hash tables: Chained hash tables, hash functions | 11.1-11.3 (skip 11.3.3) | |
| 16 | 25 | Hash tables: open-address hashing | 11.4 | |
| 17 | 27 | Binary search trees: preorder/inorder/postorder traversals, queries, insertion | 12.1-12.2, play with BST applet | |
| 18 | March | 1 | Binary search trees: minimum, successor | 12.3 |
| 19 | 4 | Binary search trees: deletion | ||
| 20 | 6 | Binary heaps: heap structure, complete binary trees, array representation, insert, extract max | 6.1-6.3, play with heap demo | |
| 21 | 8 | Binary heaps: heapsort, priority queues | 6.4-6.5 | |
| 22 | 18 | In-class exam | ||
| 23 | 20 | Final presentation topic research, selection, and proposal | ||
| 24 | 22 | Graphs: adjacency list and adjacency matrix representations, search review | 22.1-22.3 | |
| 25 | 25 | Graphs: topological sort | 22.4 | |
| 26 | 27 | Graphs: strongly connected components | 22.5 | |
| 27 | 29 | (No class meeting: Good Friday) | ||
| 28 | April | 1 | (No class meeting: Monday after Easter) | |
| 29 | 3 | Graphs: minimum spanning trees (Kruskal's algorithm, Prim's algorithm) | 23.1-23.2 | |
| 30 | 5 | Graphs: Single source shortest path, Djikstra's algorithm | 24 intro and section 3 | |
| 31 | 8 | Graphs: All-pairs shortest path, transitive closure, Floyd-Warshall algorithm | 25 intro through section 2 | |
| 32 | 10 | Stochastic Local Search: iterative improvement | ||
| 33 | 12 | Stochastic Local Search: simulated annealing, annealing schedules | Skim Science Simulated Annealing article | |
| 34 | 15 | Stochastic Local Search: group optimization problem | ||
| 35 | 17 | Stochastic Local Search: group optimization problem | ||
| 36 | 19 | In-class final presentation: Wei Xiong - Maximum Flow | ||
| 37 | 22 | In-class final presentation: Matthew Kuhl - Matrix Chain Multiplication with Dynamic Programming | ||
| 38 | 24 | In-class final presentation: Kay Wang - Huffman Coding Tree | ||
| 39 | 26 | In-class final presentation: Ian Huyett - Lossless LZ77 Compression | ||
| 40 | 29 | In-class final presentation: Anh Nguyen - Trie | ||
| 41 | May | 1 | Course evaluations, exam review | |
| 42 | 3 | In-class final presentation: Anthony Castrovillo - Multithreaded Matrix Multiplication |