How do I inspire my students to work through problems on their own?
How do I inspire my students to work through problems on their own?
By giving students assignments that they truly work on their own, with minimal hand-holding, then assigning the appropriate grade. Some students will be upset enough with their less-than-desirable grades such that they become "inspired." The other students who fail to keep up with the pace of the course will earn the grades which truly reflects their lack of ability/skill/etc.
Sitting down with the under-performing students, and explaining that they may benefit, for example, from retaking the necessary prerequisites may be in order. It's not easy to tell a junior/senior that they should probably go back and retake a sophomore-level class, but that's life, and it's better for everyone in the long run.
Although I've not been in my current faculty position for very long, I've already seen the consequences of dumbing down the assignments, and the effect that it has on the quality of the follow-on courses, both in student capabilities and my ability to teach the things that need to be taught at the appropriate pace.
The way I see it, you can either make your assignments easier, or be tough: I have (somewhat reluctantly, at first) grown to prefer the tough route.
Let me give you a student's perspective on things. This may make you very sad to hear, and it may be different elsewhere but, like Kimball touched on, perhaps your students may not know how to code.
It's a sad truth that most of my peers do not know how to program basic tasks, much less more difficult concepts such as linked-lists, binary trees, etc. For most lower level programming courses a lot of the course work can be found online. When I attempt to engage my peers with group study sessions or peer programming I find that most of them seem to be content just copying source code from online and posting it as their own.
Now, professors of higher level programming courses check the source code and grade you on format, structure, readability, variable and method names, and so on; but, many professors for my lower level courses simply checked to make sure the output was correct. My peers are having a very hard time in upper level CS courses, and many of them simply do not understand what is meant by "multi-threading," "dependency injection," "listeners," "interface," "abstract class," "visitor," etc.
I fear that there will soon be a generation of programmers who simply will not know how to program and will have simply skated by in university. I'm interested to hear other people's thought and opinions on this trend. Is my college the odd-man out? Or is this a trend elsewhere as well?
Sounds like you need to train problem solving strategies, like those described in Pólya's "How to solve it" (dated, but very relevant; problems discussed as examples are easy to grasp with minimal mathematics knowledge).
Perhaps the question How to teach perseverance? is also relevant.