intermediate10 weeks25 sectionsUpdated Jun 15, 2026
A rigorous university-level course covering the mathematical foundations and practical design of efficient algorithms — from asymptotic analysis and recurrence relations to NP-completeness and approximation strategies.
What you'll learn
- Analyze the asymptotic performance of algorithms using best, average, and worst-case complexity bounds.
- Write rigorous correctness proofs for iterative and recursive algorithms.
- Master major algorithmic design paradigms including Brute Force, Greedy, Dynamic Programming, Branch-and-Bound, and Backtracking.
- Understand and apply fundamental data structures to design efficient algorithms.
- Synthesize efficient algorithms for common engineering design situations such as graph traversal, shortest paths, and spanning trees.
- Classify problems into complexity classes P, NP, NP-complete, and NP-hard.
- Apply approximation and randomized algorithms to intractable problems.