Problem Solving and the Teaching of Mathematics