# Algorithms (CS 6161) - Spring 2022

## Syllabus

You can find the syllabus here. There, you can find all the information about course's goals, plans, logistics, grading policy, etc.

## Lectures

Below you can find the content of each class, toegether with the suggested readings. After each class, the recorded videos of that class will be available here and the slides will be uploaded here.

The tentative schedule for the full semester is here.

• Class 27: Review.

• Class 26: Machine Learning II.
Reading: Chapter 2 of this book by Shalev-Shwartz and Ben-David

• Class 25: RSA, Machine Learning I.
Reading: Chapter 31.7 of CLRS and Chapter 1 of this book by Shalev-Shwartz and Ben-David.

• Class 24: Private Key encryption and Diffie-Hellman.
Reading: this lecture note by Boaz Barak.

• Class 23: Approximation II & Randomized Algorithms.
Reading: Chapter 35 of CLRS, and this lecture note by Jin-Yi Cai.

• Class 22: Approximation Algorithms.

• Class 21: Search to Decision Reduction, Starting Approximation Algorithms.

• Class 20: Proving Cook-Levin, NP-Complete Reductions .

• Class 19: Complexity Classes P, NP, NP-hardness and Karp Reductions.

• Class 18: Algorithms for Linear programming, Zero-Sum Games and the Min-Max Theorem .
Reading: These notes by Tim Roughgarden.

• Class 17: Max matching and liniear programming .
Reading: Chapters 26.3 and 29 of CLRS.

• Class 16: Finishing Maximum Flow and Mininum Cut.
Reading: Chapter 26 (parts 1,2) of CLRS.

• Class 15: Floyd-Warshall all pairs shortest paths. Starting Max flow.
Reading: Chapter 25 (part 2) of CLRS.

• Class 14: Bellman-Ford (single source) shortest paths.

• Class 13: Graph Traversal: BFS, Dijkstra's single source shortest paths.

• Class 12: Minimum Spanning Trees: Prim, Graph Traversal: DFS.

• Class 11: Minimum Spanning Trees: Kruskal.

• Class 10: Greedy Algorithms & Graphs.
Reading: Sections 16.1 and 16.2, B.4 of CLRS.

• Class 9: Dynamic Programmming.

• Class 8: Universal Hashing, A full construction.

• Class 7: Red-Black Trees. Starting Hashing.

• Class 6: Binary search trees.

• Class 5: Stack, queue, and heap (sort).
Reading: Chapters 10 and 6 of CLRS.

• Class 4: Quicksort, basics of probability.
Reading: Chapter 7 and Appendix C of CLRS. Optional (suggested, but not mandatory) reading: Chapter 5 of CLRS.

• Class 3: Matrix multiplication, Master theorem.