Asking the question
Are there some people who cannot learn computer programming?
Our tutor recently had a frustrating experience, though in the end it appeared everything got resolved. We’ve mentioned before that he helps Computer Science students with their programs in Java, a popular language and the one chosen for Advanced Placement Comp Sci classes. A student came in with a coding assignment, a longish bit of code and a graphic display provided by her teacher that tested the code. It took several iterations of looking at the assignment, the code and the result to get some idea of what was supposed to happen and what was happening. The student had a lot of trouble explaining what her difficulty was. Eventually, our tutor asked, “What is it that your code is not doing that it should do, or doing that it shouldn’t do?” She couldn’t answer.
Confused students are nothing new. Indeed, one could say they’re the main reason for our tutor’s employment. And students who are foggy on just what the assignment is are not unusual; those who are uncertain about the course material are routine. But this one couldn’t even say what was wrong. It may have been that she was so confused she didn’t know the answer herself; alternatively, she could just have been incapable (at the moment) of expressing it. Our tutor’s compatriots who teach essay-writing face both of these problems all the time.
But formulating ideas for an essay and setting up the process for a program are not the same thing. The assignment was not terribly complicated: one’s robot should move to the right, picking up any buzzers on the way. Something of the sort was happening. It what way didn’t it match the assignment? Eventually it came out that not all the buzzers were being collected, and the robot wasn’t stopping at the end of the row. (Indeed, it wasn’t stopping at all, but that was dealt with later.) Once the problem was set out in this way, fixing it wasn’t hard.
Simply asking the question went a long way toward finding the answer. This is neither a new nor a surprising conclusion. But our tutor is concerned that the student wasn’t able to do the asking. The most important prerequisite for programming is understanding the task to be performed; the most important clue in debugging is setting out what is happening that shouldn’t, or not happening that should. It’s very hard to do anything if one can’t set up even this logical structure.
In the Old Days, of course, the only people doing programs were exactly those who could express this kind of logic (and had the creativity to answer the question). Now that coding is a routine High School class, well, are there people writing code who are simply unsuited to the task?
We answer no. Of course there are students who learn Java quicker and more slowly, as there are those who absorb coding intuitively and those who need much effort. Similarly, there are those who fight to pass Algebra, along with those who are not challenged by Multivariable Calculus. But all students have some ability to learn any subject. And though our student here may never write another line of code after this class, as she will probably not write another geometric proof after passing Geometry, we can hope that the idea of accomplishing a task through a series of logical processes stays with her.