Another recent confluence of posts on similar topics (list below) has caused me to spend some time thinking. And sooner or later I have to think though my fingers and get my thoughts out in a blog post. So here goes. Problem solving is one of those critical things for computer science students. Some people never seem to get it. They can understand all the pieces but putting them together to solve a problem can elude them. Abstracting concepts and reusing them for new problems seems to be almost a foreign concept to some students. It’s frustrating for everyone. How do we deal with this?
I have run into a lot of people, not just kids who just want the answer. Don’t tell me how to fix it just fix it! Or “I don’t need to know why just tell me what to do.” For these sorts of students a step by step tutorial is just what they want. They want a recipe that they can follow and get a desired result. If they learn something that is ok but really they just want to get to the end of the project and have something to show. The problem with this as Deepa points out is that this is seldom a good way to learn and it does little to nothing to build up problem solving skills. What it can do is serve as a platform for doing more and learning more. For example I’ve published a number of tutorials on my blog over the years. A teacher I know handed one of them (similar to Pong using XNA and Visual Basic) to his students and asked them to take it to the next level. They could define “the next level” with some flexibility. Several of them created a whole new Breakout game.
Starting with a tutorial or starter kit is a sort of scaffolding for beginners. They can climb through the code that is handed to them and try things with it. “What happens if I change this?” They can build on new things knowing that they at least have a working base to start with. So tutorials can be a good thing especially when followed with more involved projects. But they work best when someone does some explaining of what is going on in the code first. That is the added value that teachers can and should provide. Students often seem to avoid reading the descriptions in tutorials so even if you are explaining the what and why in the text students may miss it. teachers can help a great deal just by facilitating a discussion about the tutorial.
Many students need help with learning problem solving processing though. You’d think that after all the problem solving and learning children have to do in the first few years of life (what is that sound that object is making what does it mean and why are they always here?) that children would be natural problem solvers. Somehow that is not the case. Do we teach them out of it perhaps with too many boring worksheets tutorials and rote learning? A question for smarter people than me to answer. The fact is though that we do have to help students learn problem solving. Even things as simple as breaking complex problems down to smaller and smaller parts (as Laura points out in one of her posts) can be a huge step forward for many students. Laura also states:
I don’t know what the exact answer is, but project-based processes seem to encourage problem solving more than discrete assignments with teacher-defined goals. At least that’s been my experience so far.
Her experience matches my own. If goals are too rigidly defined by a teacher the students do not seem to develop the sort of ownership that leads to the kind of internal motivation that pushes students into learning on their own. The amount of open-endedness depends on the students though. Older and more motivated students are willing to take on more and to develop their own goals and even projects. Younger students can be a bit more timid and want more scaffolding. At all ages team projects can help though. Laura points out how much team based problem solving goes on with the girls in her robotics program. Talking though problems can be a powerful problem solving tool.
I have seen contests help with some students. Reading the story Mrs Marien tells about the path leading up to her student's visit with President Obama it seems clear that in some cases contests serve to send good problem solvers into hyper drive. Good as that is I think it is important to see that a bunch of other students found some incentive there to get creative and to work on some problems. In team based contests, I think of what some students have done with the Imagine Cup in recent years, there is an added incentive to work together to solve a problem which I believe causes results that are better than the sum of the parts (or individuals on the team.) Ultimately we need more problem solvers. The students who demand answers without understanding are not going to advance the world a whole lot. If creating games in Kodu or using Kinect or Windows Phones or what ever encourages learning to solve problems I think that is a good thing. If we can get students to taste enough success in problem solving and in creating new things that they want more of it that should be a goal.
Related Posts by others: