Lecture 1 - Introduction
Lecture 2 - Analysis of Algorithm
Lecture 3 - Time Complexity
Lecture 4 - Merge Sort
Lecture 5 - Solving the recurrences
Lecture 6 - Solving the recurrences (Continued...)
Lecture 7 - Divide and Conquer Algorithms
Lecture 8 - Fibonacci numbers and Matrix multiplication
Lecture 9 - Quicksort
Lecture 10 - Randomized Quicksort
Lecture 11 - Heapsort
Lecture 12 - Linear time sorting
Lecture 13 - Linear time sorting (Continued...)
Lecture 14 - Order Statistics
Lecture 15 - Order Statistics (Continued...)
Lecture 16 - Hash Function
Lecture 17 - Open Addressing Hashing
Lecture 18 - Universal Hash Functions
Lecture 19 - Perfect Hashing
Lecture 20 - Heap
Lecture 21 - Binary Search Tree
Lecture 22 - Binary Search Tree Sort
Lecture 23 - Randomly build binary search tree
Lecture 24 - Balanced Binary Search Tree
Lecture 25 - Red Black Tree
Lecture 26 - Data-structure augmentation
Lecture 27 - Interval Trees
Lecture 28 - Fixed Universe Successor
Lecture 29 - Van Emde Boas
Lecture 30 - Computational Geometry
Lecture 31 - Orthogonal Range Tree
Lecture 32 - Amortized Analysis
Lecture 33 - Amortized Analysis (Continued...)
Lecture 34 - Disjoint Set
Lecture 35 - Disjoint Set (Continued...)
Lecture 36 - Dynamic Programming (DP)
Lecture 37 - Introduction to Graphs
Lecture 38 - Minimum Spanning Tree
Lecture 39 - Prim’s Algorithm
Lecture 40 - Kruskal Algorithm
Lecture 41 - Graph Search Algorithm
Lecture 42 - Depth First Search (DFS)
Lecture 43 - Application of DFS
Lecture 44 - Breadth-First Search (BFS)
Lecture 45 - Shortest Path Algorithm
Lecture 46 - Dijkstra’s Algorithm
Lecture 47 - Bellman-Ford Algorithm
Lecture 48 - Bellman-Ford (Continued...)
Lecture 49 - Application of Bellman-Ford
Lecture 50 - Johnson’s Algorithm
Lecture 51 - All Pairs Shortest Paths
Lecture 52 - Floyd-Warshall
Lecture 53 - Flow Network
Lecture 54 - Flow Network (Continued...)
Lecture 55 - Ford-Fulkerson max-flow
Lecture 56 - Maximum Flow, Min Cut Theorem
Lecture 57 - Edmonds-Karp Algorithm
Lecture 58 - Edmonds-Karp Max Flow Algorithm
Lecture 59 - Dynamic Programming - II
Lecture 60 - Computational Complexity