Algorithms
Designing and analyzing efficient solutions.
Algorithm Analysis & Asymptotics
Algorithm analysis gives you the vocabulary and tools to predict, compare, and reason about the efficiency of any algorithm before running a single line of code.
Sorting Algorithms
From O(n²) intuition to O(n log n) optimality and beyond — a complete, rigorous tour of comparison and non-comparison sorting.
Divide & Conquer
Divide and conquer is the master key that unlocks logarithmic depth in computation — split the problem, solve the pieces, and merge your way to elegance and speed.
Greedy Algorithms
Greedy algorithms commit irrevocably to locally optimal choices — and the art is proving that this audacity is correct.
Dynamic Programming
Dynamic Programming turns exponential brute-force into polynomial elegance by recognizing that the best solution to a big problem is built from the best solutions to smaller, overlapping ones.
Graph Traversal: BFS, DFS & Applications
BFS and DFS are the two fundamental graph exploration strategies — every advanced graph algorithm is built on one of them.
Shortest Paths
Shortest paths reveal how to navigate a weighted world efficiently — from Dijkstra's greedy insight to Bellman-Ford's dynamic programming elegance to A*'s guided search.
Minimum Spanning Trees
Minimum spanning trees reveal the cheapest skeleton hiding inside any weighted graph, and two elegant greedy algorithms — guided by one unifying theorem — find it in near-linear time.
Network Flow
Network flow transforms graph problems into optimization puzzles, revealing deep structural theorems that unite matching, connectivity, and resource allocation under one elegant framework.
NP-Completeness & Reductions
NP-completeness is the mathematical proof that thousands of practical problems are all equally hard — and that cracking one would crack them all.
Randomized & Approximation Algorithms
Randomization and approximation are not signs of weakness — they are the most powerful tools in the algorithm designer's arsenal when exact deterministic solutions are too slow or provably impossible.
String Algorithms
String algorithms reveal how to search, index, and decode sequences at machine speed — the backbone of search engines, compilers, and genomics.