Thinking back, there really should be some lessions that send students off to solve user problems after having learned a programming language, where there is a much easier solution without having to program something.
Some refinement sessions that teach them how to understand the problems.