RIT Department of Computer Science
Week | Topics | Homework | Reading | Special Events and Due Dates |
1 | Introduction, asymptotic notation, analyzing running times | |||
2 | O(n) and O(n log n) algorithms: Karatsuba, mergesort | |||
3 | Introduction to recurrences, Master Theorem | Homework 1 due | ||
4 | Omega(n log n) lower bound on sorting, linear-time k-Select algorithm | |||
5 | Greedy vs (simple) dynamic programming algorithms | Homework 2 due | ||
6 | Greedy vs dynamic programming algorithms (simple and with an added variable): variants of coin changing, knapsack | |||
7 | Greedy vs dynamic programming algorithms (simple and with an added variable): sequence problems (longest increasing, longest common) | Homework 3 due | ||
8 | Greedy vs dynamic programming algorithms (subproblem defined by "from-to" indices): Huffman coding, matrix-chain multiplication | Midterm exam | ||
9 | Graphs: traversals and their applications: connected components, topological sort, etc. | |||
10 | Graphs: minimum spanning trees: Kruskal, Prim, union-find data structure | Homework 4 due | ||
11 | Graphs: shortest paths: Dijkstra, Floyd-Warshall, Bellman-Ford | |||
12 | Graphs: network flow | |||
13 | NP-completeness | Homework 5 due | ||
14 | NP-completeness continued, introduction to linear programming | Project due | ||
15 | Approximation algorithms and heuristics | Homework 6 due | ||
16 | Review, other topics, e.g., advanced data structures, pattern matching, or randomized algorithms | Final exam | ||