A rigorous undergraduate sequence exploring the cognitive architecture of problem solving, from algorithmic processing and heuristics to insight learning and divergent thinking. Students apply theoretical frameworks to well-defined and ill-defined problems, culminating in a synthesis project on complex systems.