| 1 | Python refresher | Variables, control flow, functions, lists/tuples/dicts |
| 2 | Complexity, sorting & searching | Big-O/Ω/Θ, best/average/worst case; linear vs binary search; selection, insertion, merge sort |
| 3 | Basic data structures | Arrays, lists, stacks, queues; hashing and dictionaries; ADTs |
| 4 | Graph algorithms – 1 | Adjacency matrix/list; BFS and DFS; reachability, connected components |
| 5 | Graph algorithms – 2 | Topological sort, DAGs; Dijkstra & Bellman-Ford; MST (Prim, Kruskal) |
| 6 | Union-find, heap, BST | Disjoint sets; priority queues; binary heaps (heapify, heapsort); BST operations |
| 7 | Balanced trees, greedy | AVL trees and rotations; greedy design (interval scheduling, Huffman) |
| 8 | Divide and conquer | Recurrences; quicksort, counting inversions, closest-pair |
| 9 | Dynamic programming | Memoization vs tabulation; LCS, edit distance, matrix chain, knapsack, grid DP |
| 10 | String / pattern matching | Naive and efficient string matching, text problems |
| 11 | Flows, LP, complexity classes | Max-flow/min-cut, LP intuition; P, NP, NP-completeness |
| 12 | Summary | Consolidation and revision |