Tuesdays and Thursdays 1:00pm–2:15pm
Instructor: Emily Fox <emily.fox@utdallas.edu>
Tue Jan 17, 2023
Lecture 1: Administrivia and how to describe an algorithm.
Reading: Erickson 0 and CLRS 2–2.2
Thu Jan 19, 2023
Lecture 2: Asymptotic notation for running times and important functions.
Reading: CLRS 3
Tue Jan 24, 2023
Lecture 3: Reductions, induction, recursion, divide-and-conquer, mergesort, and quicksort.
Reading: Erickson I, 1–1.2, 1.4–1.6 and CLRS 2.3, 4.0, 4.3, 7–7.1
Thu Jan 26, 2023
Lecture 4: Analyzing divide-and-conquer algorithms and Karatsuba multiplication.
Tue Feb 7, 2023
Lecture 5: Divide-and-conquer with unbalanced recursion trees and median selection.
Thu Feb 9, 2023
Lecture 6: Closest pair of points, computing Fibonacci numbers, and dynamic programming.
Reading: Erickson 3.1
Tue Feb 14, 2023
Lecture 7: Rod cutting, dynamic programming, and longest increasing subsequence.
Reading: Erickson 2.5–2.6, 3.3–3.6 and CLRS 15–15.1, 15.3–15.4
Thu Feb 16, 2023
Lecture 8: Edit distance and optimal binary search trees.
Tue Feb 21, 2023
Lecture 9: Subset sum and maximum independent set in a tree.
Tue Feb 21, 2023
Lecture 10: Greedy algorithms, class scheduling, maximum independent set in trees.
Reading: Erickson 4.2–4.3 and CLRS 16–16.2
Tue Feb 28, 2023
Lecture 11: Huffman codes.
Reading: Erickson 4.4 and CLRS 16.3
Thu Mar 2, 2023
Lecture 12: Graphs review, breadth-first search, and analysis of depth-first search.
Tue Mar 21, 2023
Lecture 13: Depth-first search, topological sort, and dynamic programming with a DAG.
Reading: Erickson 6–6.4 and CLRS 22.3–22.4
Thu Mar 23, 2023
Lecture 14: Minimum spanning trees, Kruskal's algorithm, the Prim-Jarník algorithm, and Borůvka's algorithm
Reading: Erickson 7 and CLRS 23
Tue Mar 28, 2023
Lecture 15: Single source shortest paths and Bellman-Ford
Tue Mar 28, 2023
Lecture 16: Dijkstra's algorithm, breadth-first search, and SSSP in DAGs
Reading: Erickson 8.4–8.6 and CLRS 24.3
Tue Apr 4, 2023
Lecture 17: All-pairs shortest paths, Johnson's algorithm, and Floyd-Warshall
Thu Apr 6, 2023
Lecture 18: Maximum flows and minimum cuts
Reading: Erickson 10–10.4 and CLRS 26–26.2
Tue Apr 11, 2023
Lecture 19: Ford-Fulkerson augmenting paths, flow decompositions, Edmonds-Karp maximum flow algorithms, and recent results
Reading: Erickson 10.4–10.7 and CLRS 26–26.2
Tue Apr 11, 2023
Lecture 20: Applications of maximum flows and minimum cuts including edge-disjoint paths, maximum bipartite matching, and project selection
Sun Apr 23, 2023
Lecture 21: P, NP, and NP-completeness of CircuitSAT
Reading: Erickson 12.1–12.4 and CLRS 34–34.3
Tue Apr 25, 2023
Lecture 22: NP-hardness reductions for SAT, 3SAT, IndSet, Clique, and VertexCover
Tue May 2, 2023
Lecture 23: NP-hardness reductions for 3Color, Directed HamCycle, and SubsetSum
Reading: Erickson 12.10–2.12 and CLRS 34.4–34.5