The following schedule is very tentative. Topics will take more/less time, and some topics will only be covered if time permits. I will adjust the schedule as we go along and post the relevant reading from the book.
Date | Topic | Relevant Reading |
---|---|---|
1/17 | course overview, asymptotic notation, short math review | Chapter 1: 1.2.2,1.2.3 Chapter 2: 2.1 |
1/22 | recursion and runtime analysis: binary search, gcd, Towers of Hanoi | Chapter 2: 2.4.4 |
1/24 | bubble sort, insertion sort, lowerbound on simple sorting, mergesort overview | Chapter 7: 7.2,7.3 |
1/29 | comparing objects in java, the merge routine, quicksort | Chapter 7: 7.6, 7.7 |
1/31 | quicksort runtime analysis, comparing mergesort and quicksort, hw1 due | Chapter 7: 7.7, 7.9 |
2/5 | go over hw, bucket sort | Chapter 7: 7.9 |
2/7 | abstractions, list ADT, array list implementation | Chapter 3: 3.1,3.2,3.4 |
2/12 | link list implementation | Chapter 3: 3.5 |
2/14 | iterator for link list, stack ADT and (generic) array implementation, stack applications, hw2 due | Chapter 3: 3.5, 3.6 |
2/21 | queue ADT and (generic) list implementation | Chapter 3: 3.7 |
2/26 | mathematical induction, trees: introduction, terminology, properties, traversals, binary search trees | Chapter 4: 4.1, 4.2 |
2/28 | BST implementation, hw3 due | Chapter 4: 4.3 |
3/4 | go over VList and CStack (from the homework), remove method of BST implementation | Chapter 4: 4.3 |
3/6 | MIDTERM; look over practice midterm to prepare | |
3/18 | go over midterm, balanced trees: motivation, AVL trees | Chapter 4: 4.4 |
3/20 | heaps | Chapter 6: 6.1-6.3 |
3/25 | leftist heaps, heapsort | Chapter 6: 6.6, Chapter 7: 7.5 |
3/27 | hashing: overview, collision resolution strategies, hw4 due | Chapter 5: 5.1 - 5.3 |
4/1 | go over homework, more collision resolution, rehashing, intro to graphs: motivation for topological sort | Chapter 5: 5.4 -5.6 |
4/3 | graph terminology, modeling problems as graphs, different graph representations | Chapter 9: 9.1 |
4/8 | topological sort (naive and efficient implementation), depth-first search (DFS), dfs-based topological sort | Chapter 9: 9.2, 9.6.1 |
4/10 | using Java Collections to represent a graph, dfs application: finding strongly connected components (SCCs) | Chapter 9: 6.6.5 |
4/15 | correctness of finding SCCs (and dfs-based topological sort), breadth first search, hw5 due | Chapter 9: 9.3.1 |
4/17 | minimum spanning trees: greedy MST algorithms (Kruskall and Prim) | Chapter 9: 9.5 |
4/22 | efficient implementation of MST algorithms | Chapter 9: 9.5 |
4/24 | weighted shortest paths: Dijkstra | Chapter 9: 9.3.2 |
4/29 | 2-approximation for Traveling Salesman Problem (TSP), course evaluations | |
5/1 | final review, hw6 due | |
5/6 | FINAL (9-11 a.m., same room), practice final |