This question appeared on Facebook a few days ago:
Does anyone have an effective way to teach students how to break down a problem into steps and then solve each step one by one? I think my students are struggling with a large question and breaking it in subsequent parts.
There were some good suggestions. I wanted to add something but didn't have time then so I thought I'd write it up now.
As an aside, it took me forever to find the post again over on Facebook. If there's a way to mark posts or save a direct link I'd love to hear it. I had to look through all the CS Ed groups I belong to manually until I found it again.
When I read the program I was reminded of a PD session we had to attend back at Stuyvesant. Back then the fad was Writing Across the Curriculum. Every teacher in every class was to give some significant writing assignment, evaluate it and provide feedback. Let's forget the fact that most of us never had any training or preparation to do so.
On that PD day the guest speaker was William Zinsser. The first thing he said was that what we were being asked to do by our principal was bunk. He then proceeded to give advice on simple good writing.
The procedure he recommended following was to ask yourself (or have the student ask themselves) "what does my audience need to know next?" That's your next sentence. Then ask the question again. Rinse and repeat until done.
It was simple and it made sense. It also applied to introductory CS problems. When starting out, students have a limited CS / programming tool box so a good question for them to ask when trying to solve a problem is not only "what do I need to do next? but also "what can I do next?"
When students have a limited CS vocabulary and set of idioms - loops, conditionals, functions, whatever, there will only be so many things they can do to move a problem along. If they go through the things the can do they will likely fall on to what they should do.
It's similar to doing a proof in geometry. Students have a set of givens. Given that set, what can they do? They only know so many theorems at the beginning.
Over time, they'll recognize patterns and develop as problem solvers.
If you're part of the AP CS A teachers facebook group you probably saw the question. Many good answers were posted. I just wanted to add this thought to the collection.