The general rule of teaching is to progress from specific things to more general things. (As opposed to explaining the general things first, when the students are unable to imagine a specific example. Or when the students only know one specific example, so they are unable to understand what is the benefit of speaking abstractly.)
I suspect the issue with programming is related. “Write a program that solves problem X” is too abstract for a beginner, who hasn’t seen yet enough specific examples of “a program that solves a problem”.
The correct way is to start with giving examples: “program P1 solves the problem X1 (now let’s look how exactly it accomplishes the task)”, “program P2 solves the problem X2″, “program P3 solves the problem X3”, etc. Only after practicing this is the proper time to ask “what would be a program that solves a problem X”.
Whether to start from the specific or the general probably depends on the student—I have a general memory (sorry for lack of details) from someone who couldn’t learn a programming thing until they had a explanation of what it was supposed to do.
I’m not sure if this is the same thing, but I couldn’t do word problems until realized that I was supposed to translate the words into equations and then crank it through mechanically. I thought I was supposed to read the problem and then perceive the answer directly. (It’s quite possible they told me to do translation, but I wasn’t paying attention.)
The general rule of teaching is to progress from specific things to more general things. (As opposed to explaining the general things first, when the students are unable to imagine a specific example. Or when the students only know one specific example, so they are unable to understand what is the benefit of speaking abstractly.)
I suspect the issue with programming is related. “Write a program that solves problem X” is too abstract for a beginner, who hasn’t seen yet enough specific examples of “a program that solves a problem”.
The correct way is to start with giving examples: “program P1 solves the problem X1 (now let’s look how exactly it accomplishes the task)”, “program P2 solves the problem X2″, “program P3 solves the problem X3”, etc. Only after practicing this is the proper time to ask “what would be a program that solves a problem X”.
Whether to start from the specific or the general probably depends on the student—I have a general memory (sorry for lack of details) from someone who couldn’t learn a programming thing until they had a explanation of what it was supposed to do.
I’m not sure if this is the same thing, but I couldn’t do word problems until realized that I was supposed to translate the words into equations and then crank it through mechanically. I thought I was supposed to read the problem and then perceive the answer directly. (It’s quite possible they told me to do translation, but I wasn’t paying attention.)