Lecture 1 - Insertion sort
Lecture 2 - Analysis of Insertion Sort
Lecture 3 - Asymptotic Analysis
Lecture 4 - Recurrence of Merge Sort
Lecture 5 - Substitution Method
Lecture 6 - The Master Method
Lecture 7 - Divide-and-Conquer
Lecture 8 - Divide-and-Conquer (Continued...)
Lecture 9 - Straseen's Algorithms
Lecture 10 - QuickSort
Lecture 11 - Analysis of Quicksort
Lecture 12 - Randomized Quicksort
Lecture 13 - Heap
Lecture 14 - Heap Sort
Lecture 15 - Decision Tree
Lecture 16 - Linear time Sorting
Lecture 17 - Radix Sort and Bucket Sort
Lecture 18 - Order Statistics
Lecture 19 - Randomised Order Statistics
Lecture 20 - Worst case linear time order statistics
Lecture 21 - Hash Function
Lecture 22 - Open Addressing
Lecture 23 - Universal Hashing
Lecture 24 - Perfect Hashing
Lecture 25 - Binary Search Tree (BST) Sort
Lecture 26 - Randomly build BST
Lecture 27 - Red Black Tree
Lecture 28 - Red Black Tree (Continued...)
Lecture 29 - Augmentation of data structure
Lecture 30 - Interval trees
Lecture 31 - Fixed universe successor
Lecture 32 - Van Emde Boas data structure
Lecture 33 - Amortized analysis
Lecture 34 - Computational Geometry
Lecture 35 - Computational Geometry (Continued...)
Lecture 36 - Dynamic Programming
Lecture 37 - Longest common subsequence
Lecture 38 - Graphs
Lecture 39 - Prim's Algorithms
Lecture 40 - Graph Search
Lecture 41
Lecture 42
Lecture 43
Lecture 44
Lecture 45
Lecture 46
Lecture 47
Lecture 48
Lecture 49
Lecture 50
Lecture 51
Lecture 52 - Union-Find
Lecture 53 - Augmented disjoint set data structure
Lecture 54 - Network flow
Lecture 55 - Network Flow (Continued...)
Lecture 56 - Network Flow (Continued...)
Lecture 57 - More on Dynamic Programming
Lecture 58 - More on Dynamic Programming (Continued...)
Lecture 59 - Computational Complexity
Lecture 60 - Computational Complexity (Continued...)