Mondays and Wednesdays 1:00pm–2:15pm
Instructor: Kyle Fox <kyle.fox@utdallas.edu>
Mon Aug 23, 2021
Lecture 1: Administrivia and what is an algorithm?
Reading: Erickson 0 and CLRS 2–2.2
Wed Aug 25, 2021
Lecture 2: Asymptotic notation for running times and important functions
Reading: CLRS 3
Mon Aug 30, 2021
Lecture 3: Reductions, induction, and recursion
Wed Sep 1, 2021
Lecture 4: Divide-and-conquer, mergesort, and quicksort
Reading: Erickson 1.4–1.6 and CLRS 2.3, 4.0, 4.3, 7–7.1
Wed Sep 8, 2021
Lecture 5: Analyzing divide-and-conquer algorithms
Mon Sep 13, 2021
Lecture 6: Divide-and-conquer with unbalanced recursion trees, (median) selection
Wed Sep 15, 2021
Lecture 7: Backtracking, game trees, rod cutting, subset sum
Mon Sep 20, 2021
Lecture 8: Dynamic programming, Fibonacci numbers, rod cutting, and subset sum
Reading: Erickson 3.1, 3.3–3.5, 3.8 and CLRS 15–15.1, 15.3–15.4
Mon Sep 20, 2021
Lecture 9: Edit distance, longest increasing subsequence(?)
Mon Sep 27, 2021
Lecture 10: Maximum independent set in trees, greedy algorithms, and class scheduling
Wed Sep 29, 2021
Lecture 11: Huffman codes
Reading: Erickson 4.4 and CLRS 16.3
Mon Oct 11, 2021
Lecture 12: Graph representations and graph traversal
Reading: Erickson 5–5.6 and CLRS 22–22.2
Wed Oct 13, 2021
Lecture 13: Counting graphs components, graph reductions, flood fill, and intro to depth-first search
Mon Oct 18, 2021
Lecture 14: Applications of depth-first search including directed cycle detection, topological sort, and another view of dynamic programming
Reading: Erickson 6–6.4 and CLRS 22.3–22.4 (and 24.2 for shortest paths in DAGs)
Wed Oct 20, 2021
Lecture 15: Minimum spanning trees, Kruskal's algorithm, the Prim-Jarník algorithm, and Borůvka's algorithm
Reading: Erickson 7 and CLRS 23
Mon Oct 25, 2021
Lecture 16: Finishing minimum spanning trees, the Prim-Jarník algorithm, Borůvka's algorithm, and beginning single source shortest paths
Wed Oct 27, 2021
Lecture 17: Single source shortest paths, SSSPs in DAGs, and Bellman-Ford
Mon Nov 1, 2021
Lecture 18: Single source shortest paths, Dijkstra's algorithm and BFS, all-pairs shortest paths, and Floyd-Warshall
Reading: Erickson 8.4, 8.6, 9.1–9.2, 9.5, 9.8 and CLRS 24.3, 25, 25.2
Wed Nov 3, 2021
Lecture 19: Maximum flows and minimum cuts
Reading: Erickson 10–10.4 and CLRS 26–26.2
Mon Nov 8, 2021
Lecture 20: Ford-Fulkerson augmenting paths, flow decompositions, Edmonds-Karp maximum flow algorithms, and recent results
Reading: Erickson 10–10.7 and CLRS 26–26.2
Wed Nov 10, 2021
Lecture 21: Applications of maximum flows including edge disjoint paths, maximum bipartite matching, and other assignment problems
Reading: Erickson 11 and CLRS 26.3
Mon Nov 29, 2021
Lecture 22: NP-hardness, CircuitSAT, and SAT
Reading: Erickson 12.1–12.6 and CLRS 34–34.4
Wed Dec 1, 2021
Lecture 23: More NP-hard problems including MaxIndSet, MaxClique, VertexCover, 3Color, and SubsetSum
Reading: Erickson 12.7–12.12 and CLRS 34.5