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 |