Despite our best efforts, many students are still challenged by programming. A 2001 ITiCSE working group (the "McCracken group") assessed the programming ability of a large population of students from eight universities, in the United States and four other countries. Each author tested his or her own students from a common set of programming problems. The students at each institution were required to write a program to solve one of the problems. Most students at all the institutions performed much more poorly than expected. Most students did not even get close to finishing the set task. The results are compelling, given the multi-institutional, multi-national nature of the collaboration. Whereas a similar report from an author at a single institution might be dismissed as the result of poor teaching skills, that multi-national project suggests that there is something fundamentally wrong with the way we, as an entire discipline, teach programming.
While the work of the McCracken group has highlighted the extent of the problem, considerable further work is required to diagnose the cause of the problem. The nature of McCracken group study does not distinguish between two broad explanations of the cause of the problem: do students struggle with programming because they do not understand the programming language (the "language problem"), or are they comfortable with the language but lack training in the correct thinking processes required to construct a non-trivial program (the "design problem")? It is difficult to distinguish between these two explanations in any scenario where students are required to write code. One way to distinguish between these two broad explanations is to ask students to demonstrate their comprehension of existing code. If a student cannot consistently demonstrate their understanding of existing code, then the student probably suffers from the language problem. If another student can demonstrate such an understanding, but struggles to write programs, then that student probably suffers from the design problem. The collaborators in this project believe that only when we have valid and reliable means of establishing that a particular student does not suffer from the language problem will we then be able to use such a student as a subject in any study of the design problem. This working group will therefore study the language problem.
For more information on the working group, download this description of the working group (PDF file)