Problem Solving - Goel, Vinod Kumar (Towards a theory of thinking, 2010)