I did a little reading on teaching problem solving. As nicole pointed out in her comment to my last post, it might be necessary to be explicit about the steps involved in solving problems. Those steps might include defining the problem (i.e., what are you trying to do), breaking the problem into smaller steps (especially important for programming), propose possible solutions based on what you already know, and try those solutions.
One of the things I haven’t done enough of is getting students to start with pseudocode, which would break their problems into manageable parts. Now that we’re into bigger projects, this might be especially useful. Asking questions along the way like, “How would you do x?” (x being something they know how to do) would also help. And I do some of that, but I know how frustrating that can be, and frankly, there’s often not time to do that.
But I can try to keep teaching the process. As I know myself, it can take time to feel confident in your problem solving skills.