Reviews

Publication

« Back to Publications

<%/* =================================================================== Autoren, Jahr, Titel =================================================================== */%>

Lister, Raymond; Adams, Elizabeth S.; Fitzgerald, Sue; Fone, William; Hamer, John; Lindholm, Morten; McCartney, Robert (2004)

A multi-national study of reading and tracing skills in novice programmers

ACM SIGCSE Bulletin, Vol. 36, No. 4, pp. 119–119.

<%/* =================================================================== Tags =================================================================== */%>

Tags for this publication · Programme lesen · Programmieren lernen

<%/* =================================================================== Google Links =================================================================== */%>

Google this publication · ScholarGoogle this publication

Abstract: A study by a ITiCSE 2001 working group ("the McCracken Group") established that many students do not know how to program at the conclusion of their introductory courses. A popular explanation for this incapacity is that the students lack the ability to problem-solve. That is, they lack the ability to take a problem description, decompose it into sub-problems and implement them, then assemble the pieces into a complete solution. An alternative explanation is that many students have a fragile grasp of both basic programming principles and the ability to systematically carry out routine programming tasks, such as tracing (or "desk checking") through code. This ITiCSE 2004 working group studied the alternative explanation, by testing students from seven countries, in two ways. First, students were tested on their ability to predict the outcome of executing a short piece of code. Second, students were tested on their ability, when given the desired function of short piece of near-complete code, to select the correct completion of the code from a small set of possibilities. Many students were weak at these tasks, especially the latter task, suggesting that such students have a fragile grasp of skills that are a prerequisite for problem-solving.

<%/* =================================================================== Quotes =================================================================== */%>

Zitat: "First, students were tested on their ability to predict the outcome of executing a short piece of code. Second, students were tested on their ability, when given the desired function of short piece of near-complete code, to select the correct completion of the code from a small set of possibilities. Many students were weak at these tasks, especially the latter task, suggesting that such students have a fragile grasp of skills that are a prerequisite for problem-solving."

<%/* =================================================================== Reviews =================================================================== */%>

Reviewer Raimond Reichert (2011-05-25)

Mehrere Studien, unter anderem auch die internationale Studie einer Arbeitsgruppe der ITiCSE 2001, haben festgestellt, dass Studenten nach einem oder zwei Semester Studium bei Programmieraufgaben schlechter als erwartet abschneiden. Eine gängige Hypothese, die auch von der zitierten Studie vertreten wird, führt diese Erkenntnis auf mangelhaft Problemlösefähigkeiten der Studierenden zurück. Die Studie von Lister et. al. hingegen untersucht die Hypothese, dass es den Studenten bereits an notwendigen Voraussetzungen für das Problemlösen mangelt: An der Fähigkeit, Programme zu lesen und gedanklich zu simulieren.

An der vorliegenden Studie haben insgesamt 941 Studenten teilgenommen; 556 Studenten haben zwölf Multiple Choice-Fragen beantwortet, bei denen es sich um Programme zu Arrays handelte (Beispiel im Kasten unten). Aufgrund der Resultate wurden die Studenten in vier ähnlich grosse Gruppen eingeteilt:

  • 25% der Studenten haben 0–4 Fragen richtig beantwortet. Die Autoren argumentieren, dass dieser Gruppe die Voraussetzungen zum Problemlösen fehlen.
  • 50% der Studenten haben 5–9 Aufgaben richtig beantwortet. Hypothesen zu diesen 50% der Studenten sind schwieriger zu formulieren; es könnte sein, dass sie prinzipiell Programme lesen können, ihnen aber gewisse Fertigkeiten fehlen.
  • 25% der Studenten haben 10–12 Fragen richtig beantwortet. Diese Gruppe müsste die Voraussetzungen bezüglich Programme lesen erfüllen; sollten Studenten aus dieser Gruppe Mühe haben, Programmieraufgaben zu lösen, könnte ihre Schwierigkeit tatsächlich das Problemlösen sein.

Die Studie untersuchte in diesem Zusammenhang die "Gekritzel" (engl. Doodles), welche die Studenten zur Lösungsfindung angefertigt haben, und kategorisierten diese Gekritzel. Interessant ist die Kategorisierung insofern, als dass sie auf verschiedene Hilfmittel zur einfachen Programmanalyse hinweist, die Studenten vermittelt werden könnten.

Programme lesen zu können ist von Bedeutung über das Programmierlernen hinaus: Die meisten Entwickler müssen auch Programme warten und in der Lage sein, sich in Legacy Code einzuarbeiten. Insofern sind die Resultate dieser Studie auch für die Praxis von Interesse – interessant wäre ein Vergleich der Studenten mit Entwicklern, die eine gewisse Praxis haben: Haben die Entwickler mit der Zeit Programme lesen gelernt oder kämpfen sie immer noch damit?

Zudem stellt sich die Frage, wie Programme lesen im Unterricht gefördert werden könnte. Eine Möglichkeit dazu wäre Peer Feedback, gegenseitige Code Reviews der Lernenden.

Beispiel einer Multiple Choice-Aufgabe der Studie

Consider the following code fragment:

int[] x1 = {1, 2, 4, 7};
int[] x2 = {1, 2, 5, 7};
int i1 = x1.length-1;
int i2 = x2.length-1;
int count = 0;
while ((i1 > 0 ) && (i2 > 0 )) {
	if ( x1[i1] == x2[i2] ) {
		++count;
		--i1;
		--i2;
	}
	else if (x1[i1] < x2[i2]) {
		--i2;
	}
	else { // x1[i1] > x2[i2]
		--i1;
	}
}

After the above while loop finishes, count contains what value?

a) 3
b) 2
c) 1
d) 0

Permanenter Kurzlink auf diese Seite: http://www.swisseduc.ch/informatik-didaktik/reviews/publications/view/4