Lectures
Date | Lecture | Readings and additional material |
---|---|---|
01/27/20 | Lecture 1: Introduction I: Euclidean algorithm, Fibonacci numbers and computational problems classification. | CLRS 3.2, CRLS 31.2, Fast Fibonacci calculation, P and NP, Online C compiler |
01/29/20 | Lecture 2: Introduction II: Insertion sort, asymptotic notation and mergesort. | CLRS 2, CRLS 3, Bottom-up mergesort C code |
02/03/20 | Lecture 3: Divide and conquer I: Maximum subarray, substitution method and master theorem. | CLRS 4.1, CRLS 4.3, CLRS 4.5, Recursive mergesort C code |
02/05/20 | Lecture 4: Divide and conquer II: Multiplication of integers (Karatsuba) and matrices (Strassen). | CLRS 4.2, Notes on Karatsuba algorithm |
02/10/20 | Lecture 5: Divide and conquer III: Order statistics in linear time. | CLRS 9.3, Notes on linear-time selection |
02/12/20 | Lecture 6: Randomized algorithms I: Quicksort. | CLRS 7, Notes on Quicksort analysis |
02/17/20 | Lecture 7: Randomized algorithms II: Balanced allocation (balls and bins), polynomial identity verification (Schwartz–Zippel) and matrix product verification (Freivald). | CLRS 5.4.1, Balls and bins analysis, Schwartz–Zippel lemma, Freivalds’ algorithm |
02/19/20 | Lecture 8: Randomized algorithms III: Minimum cuts (Karger) and set balancing (Chernoff bounds). | CLRS 5.4.2, Randomized minimum cuts, Set balancing and Chernoff bounds |
02/24/20 | Lecture 9: Dynamic programming I: Rod cutting. | CLRS 15.1 |
02/26/20 | Lecture 10: Dynamic programming II: Longest common subsequence. | Notes on longest common subsequence |
03/02/20 | Lecture 11: Dynamic programming III: Matrix chain multiplication and segmented least squares. | CLRS 15.2, Notes on segmented least squares |
03/04/20 | Lecture 12: Greedy algorithms I: Activity selection and fractional knapsack. | CLRS 16.1, Notes on fractional knapsack |
03/06/20 | Lecture 13: Greedy algorithms II: Set cover and minimum spanning trees. | Notes on set cover, Notes on minimum spanning trees |
03/30/20 | Lecture 14: Basic data structures I: Stacks, Queues, Linked Lists. | CLRS 10 |
04/01/20 | Lecture 15: Basic data structures II: Universal hashing. | CLRS 11 |
04/06/20 | Lecture 16: Basic data structures III: Open addressing. | CLRS 11 |
04/08/20 | Lecture 17: Search trees I: Binary search trees. | CLRS 12 |
04/13/20 | Lecture 18: Search trees II: Red-black trees (insertion). | CLRS 13, Notes on red-black trees by Lyn Turbak |
04/15/20 | Lecture 19: Search trees III: Red-black trees (deletion). | CLRS 13, Notes on red-black trees by Lyn Turbak |
04/20/20 | Lecture 20: Graph Algorithms I: Breadth first search. | CLRS 22.2 |
04/22/20 | Lecture 21: Graph Algorithms II: Dijskta’s algorithm. | CLRS 24.3 |
04/27/20 | Lecture 22: NP-completeness I: Definitions | CLRS 34 |
04/29/20 | Lecture 23: NP-completeness II: Reductions | CLRS 34 |
05/04/20 | Lecture 24: Special Topics I: FFT algorithm | |
05/06/20 | Lecture 25: Special Topics II: Aproximation algorithms | |
05/11/20 | Lecture 26: Discussion on the final |