I have always though the reason the students in my school do badly on tests, other than lack of test taking skills and inherent inflated egos, is that they don’t know how to read and generally lack perseverance. Of course most people tend to approach problems with straight forward, brute force solutions so we use drill and kill test practice sessions, and train all our teachers as reading teachers. There is nothing, in particular, wrong with this other than the fact that drill and kill only teaches student to fry fish that are given to them, not to catch the fish, and I should no more be teaching reading than an english teacher should teach math. This is not being insulting, it is just that on more than one occasion an humanities teacher has seen a math problem on the internet, taught it, and then I spend my class unteaching the misconception.
That does not mean that we all should be teaching kids to read, and to work problems creatively and with persistence. We should, which is why I love using computers as a teaching tool and explicitly teaching computer skills and coding.
I can’t tell you the number of times when a students has asked me where to click a web page, and when I say look for the assignment, they just randomly scroll up and down, refusing to even decode. They will do this for a long time, hoping to frustrate me until I do the reading for them. I won’t do it. They need to learn to read, and to make an effort to decode if they have not reached that level. If they cannot decode the words on a web page, how can they hope to comprehend the questions on a test?
Coding is a similar situation. I have been working on my lesson plan this week, which is a maker project to collect data and store it for later analysis. I have several resources listed in the assignment. These resources are written, and are a curated set of the documentation I used to learn the device and how to program the maker project. To succeed the students are going to have read this documentation, comprehend it, and apply it to the problem.
Coding itself is an exercise in reading. The grammar is very precise. In python a misplaced space is an error. Students must be able to read and comprehend the code, separating the tokens that are critical from the strings that informational. When starting coding, students have a great deal of trouble because they are simply trying to copy, just like they do in all the other classes, without decoding or comprehending. Breaking them of this habit, forcing them to work the problem, not memorize a solution, is a primarily goal in every class, not just in computer classes.
In this maker project, simply copying the code was not enough. There was a bug in the code, or a misunderstand on my part. The file was not saving, and most of my time was spent dealing with it. This is the ultimate form of comprehension and problems solving that we should be teaching. Perseverance. Use failure a tool for learning. Hope for a fortuitous accident where a clue emerges, and be vigilant enough to identify the clue. As we learn when we do research, even if we do not solve the problem, identifying and dispersing a clue is a success in itself.