What are the priorities of computer science? The question is motivated by discussion of "ICT4D" (Information and Communications Technologies for the Developing world). Quoting Guzdial, "...we focus on the solutions to the problems in computer science, where ICT4D is about the problems. As a computing educator, I hear repeatedly from teachers, 'Computer science is problem-solving on computers!' Yet, as Beki points out, we organize our discipline and our findings on characteristics of the solution, not the problem." How we teach introductory computer science is wrong. Guzdial actually means "how we teach programming", and his target is the usual method of showing students a few programs, then asking them to write some. This is called "minimally-guided instruction", and there's now a lot of evidence to show that it's a poor approach. Guzdial summarizes one of the first studies in the area:
There are two groups of students, each of which is shown two worked-out algebra problems. Our experimental group then gets eight more algebra problems, completely worked out. Our control group solves those eight more problems. As you might imagine, the control group takes five times as long to complete the eight problems than the experiment group takes to simply read them. Both groups then get new problems to solve. The experimental group solves the problems in half the time and with fewer errors than the control group. Not problem-solving leads to better problem-solving skills than those doing problem-solving.
He then quotes another:
After a half-century of advocacy associated with instruction using minimal guidance, it appears that there is no body of research supporting the technique. In so far as there is any evidence from controlled studies, it almost uniformly supports direct, strong instructional guidance rather than constructivist-based minimal guidance during the instruction of novice to intermediate learners.
Food for thought...