# Lectures (Algorithms - Fall 2018)

Here you can find the slides and videos (in collab) of the lecture as well as related notes for each class. The posts are in reverse chronological order.
The tentative schedule is here.

• Class 25: Basics of number theory and Diffie-Hellman Key Agreement and Rivest-Shamir-Adleman public-key algorithms.
Reading: this lecture note by Boaz Barak.
You can find the video of this class here, and the slides are here.

• Class 24: Randomized approximation algorithms for 3-SAT and 2-SAT and derandomizing it for 2-SAT using pairwise independent hash functions.
Reading: CLRS 35.4 and first chapter of this book by Luby and Wigderson.
You can find the video of this class here, and the slides are here.

• Class 23: Cook Reductions + Search to Decision reduction for NP-complete languages + Special case of factoring + Approximation algorithm for Min Vertex Cover
Reading: Chapter 34 and 35 of CLRS.
You can find the video of this class here, and the slides are here.

• Class 22: Examples of Karp Reduction + Showing that NP complete problems exist.
Reading: Chapter 34 of CLRS.
You can find the video of this class here, and the slides are here.

• Class 21: P, NP, Karp (aka many-to-one) Reductions and NP completeness.
Reading: Chapter 34 of CLRS.
You can find the video of this class here, and the slides are here.

• Class 20: Von Neumann's Min-Max Theorem in Game Theory and its relation to LP Duality
Reading: this lecture note from Tim Roughgarden's course.
You can find the video of this class here, and the slides are here.

• Class 19: Linear Programming II, Duality Theorems and Ellipsoid Method
Reading: Chapter 29 of CLRS and this lecture note from Sanjeev Arora's course.
You can find the video of this class here, and the slides are here.

• Class 18: Linear Programming I
Reading: Chapter 29 of CLRS
You can find the video of this class here, and the slides are here.

• Class 17: Maximum-Flow vs. Min-Cut II
Reading: Chapter 26 of CLRS
You can find the video of this class here, and the slides are here.

• Class 16: Maximum-Flow vs. Min-Cut I
Reading: Chapter 26 of CLRS
You can find the video of this class here, and the slides are here.

• Class 15: Bellman-Ford algorithm (single scource) and Floyd-Warshall algorithm (all pairs)
Reading: Chapters 24 and 25 of CLRS
You can find the video of this class here, and the slides are here.

• Class 14: Dijkstra's algorithm (single source shortest path)
Reading: Chapter 24 of CLRS
You can find the video of this class here, and the slides are here.

• Class 13: Review
Reading: all the previous chapters listed below!
You can find the video of this class here, and the slides are here.

• Class 12: Minimum Spanning Tree (Two algorithms)
Reading: Chapter 23 of CLRS
You can find the video of this class here, and the slides are here.

• Class 11: DFS and BFS.
Reading: Chapter 22 of CLRS
You can find the video of this class here, and the slides are here.

• Class 10: Greedy Algorithms, starting graph notions.
Reading: Chapters 16 & 22 + Appendix B.4 and B.5 from CLRS
You can find the video of this class here, and the slides are here.

• Class 9: Dynamic Programming II (inculding the minimum triangulation problem that is not in CLRS)
Reading: Chapters 15 of CLRS
You can find the video of this class here, and the slides are here.

• Class 8: Hashing II + starting Dynamic Programming
Reading: Chapters 11 and 15 of CLRS
You can find the video of this class here, and the slides are here.

• Class 7: More powerful search trees + search using hashing
Reading: Chapters 13 and 11 of CLRS
You can find the video of this class here, and the slides are here.

• Class 6: Recapping Heap + Binary Search Tree
Reading: Chapters 12 of CLRS
You can find the video of this class here, and the slides are here.

• Class 5: Elementary data structurs (stack and queue) + Heap (and Heap sort).
Reading: Chapters 6 and 10 of the CLRS book.
You can find the video of this class here, and the slides are here.

• Class 4: Ranedomized quicksort, probability spaces, random variables, linearity of expectation.
Reading: Chapters 7 of CLRS book. Again, chapter 5 is mostly for making yourself familiar with randomization tricks, and make sure to read appendix C of CLRS also for familiarity with basics of probability and counting.
You can find the video of this class here, and the slides are here.

• Class 3: Matrix Multiplication (Divide and Conquer), Master Thoerm for solving recursion, randomization, quicksort.
Reading: Chapters 4, 5 of CLRS book. Chapter 5 is mostly for making yourself familiar with randomization tricks, but we will not cover that chapter on its own. However, make sure to read appendix C of CLRS also for familiarity wtih basics of probability and counting. We sill need them for analyzing quick sort.
You can find the video of this class here, and the slides are here.

• Class 2: Recapping Big O Notation, Insertion Sort, Merge Sort + Divide and Conquer
Reading: Again, make sure to read Chapters 1, 2, and 3 of CLRS book!
You can find the video of this class here, and the slides are here.

• Class 1: A bird's view, and foundations.
Reading: Chapters 1, 2, and 3 of CLRS book.
You can find the video of this class here, and the slides are here.