Week 1 | August 31 - September 2 | Introduction and review (bubble sort, insertion sort, selection sort, best case and worst cases analysis) |
Week 2, 3 | September 5-16 | Analysis tools (asymptotic notation, summations, recurrences) |
Week 4, 5, 6 | September 19-30, Oct 3-7 | Efficient sorting (mergesort, heapsort, quicksort, randomized quicksort). Sorting lower bound, bucket sort and counting sort. Selection (quick-select and O(n) worst-case selection) |
| fall break | |
Week 7, 8, 9, 10 | October 12 -Nov 4 | Techniques (divide-and-conquer, dynamic programming and greedy). |
Week 11, 12 | November 7-18 | Graphs (BFS, DFS, topological sort and DAGs) |
| Thanksgiving break | |
Week 14, 15 | November 28 - December 9 | Graphs: shortest paths (shortest paths on DAGs, Dijkstra’s and Bellman-Ford algorithms) and minimum spanning trees (Kruskal’s and Prim’s algorithms |