# COP-4534 Algorithm Techniques Lectures

- August 27: Introduction, Review.
- Read Chapter 4, especially Section 4.5

- August 29: Selection
- September 3: Closest Points
- September 5: No class
- September 10, 12, 17: Dynamic Programming
- Rod cutting
- Largest subsquare problem
- Coin changing
- Longest common subsequence
- Optimal chained matrix multiply

- September 19, 24, 26: Greedy Algorithms
- Scheduling problems
- Huffman Codes
- Bin packing (see notes on Moodle)

- October 1, 3, 8: Randomized Algorithms and Data Structures
- Skip lists
- Primality testing
- Universal hashing and perfect hashing

- October 10: Stable Matching
- October 12: Review for exam
- October 17: MIDTERM EXAM
- October 22, 24: Shortest Paths
- Breadth first search
- Dijkstra's Algorithm
- Bottleneck path
- Discussion of Assignment #4

- October 29: Network Flow and Bipartite Matching
- Read Chapter 26.1 to 26.3
- Max-flow/min-cut theorem
- Ford-Fulkerson
- Edmonds-Karp

- October 31: Depth first search
- Depth first search
- Strong components algorithm

- Nov 5, 7, 12: Minimum Spanning Tree
- Prim's algorithm
- Disjoint-sets union/find
- Kruskal's algorithm
- Boruvka's algorithm

- Nov 14, 19, 21: String algorithms
- Rabin-Karp
- Knuth-Morris-Pratt
- Boyer-Moore
- Radix Sort
- Suffix Arrays and LCP
- Discussion of Assignment #6

- Nov 26: Backtracking Algorithms
- Nov 28: No class
- Dec 3: NP-Completeness + Evals
- Dec 5: Review for final