Teaching Problem Solving: What Why and How