Students this morning were asking people for duct tape. I don’t know what problem they were trying to solve but eventually it was solved with a plastic cup. Really. But it got me thinking about how students ask for help in programming projects. What seems to happen a lot is that they come up with a solution, some action they want the computer will do, that will solve their problem. This leads them to ask how to implement that action rather than how to solve their real problem. The problem for them and for me as a teacher is that the “solution” they have come up with may not be the best or even a good solution.
This can often lead to frustration in the long run as students try to make some feature of a language or library do things it was not really intended to do.
I’ve learned to ask “what problem are you trying to solve?” Students sometimes have trouble explaining that as well.
So my asking them often helps (or forces) them to think a bit more deeply about their ideas. Once they do that and understand both what they want to do and what the feature they are asking about does they see that they need something different. Or even see how to use a feature more correctly.
In many ways I see teaching programming as pointing students in a direction and getting out of the way.
It sounds easy and in some ways it is. At least it is easier than trying to cover everything they could possibly need to know in lectures (which bore everyone). On the other hand it involves dialogue between teacher and student so that there is mutual understanding. I think that this helps students a lot though. They learn to think things out in more detail and learn how to communicate their ideas better. And of course it avoids some (though never all) of the “wrong” directions students run down in their hurry to get things done.
There is value in the “wrong” directions as well. But when you have a limit3ed time to work with students and grades must be given (yuck) and you want to keep enthusiasm high providing some good direction is pretty important.