CS 216 - Data Structures
Readings


Unless otherwise noted, all readings are from the course text.  Each reading assignment should be completed before the class on the date indicated.  These readings are subject to change; check here for updates.  If a reading assigned in class does not match the reading assignment here, the reading assigned in class supercedes.
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