Teaching problem solving