Core Principles: Divide and Conquer, Greedy Heuristics, Dynamic Programming (Optimal Substructure & Overlapping Subproblems), Graph Theory & Shortest Paths, Network Trees, and String Matching Automata ...