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 |