Accessible, no-nonsense, and programming language-agnostic introduction to algorithms. Part 3 covers greedy algorithms (scheduling, minimum spanning trees, clustering, Huffman codes) and dynamic programming (knapsack, sequence alignment, shortest paths, optimal search…