digit. Many used iteration; to our surprise, most iteration involved post-test loops. In 2008, 13 we described our
investigation of students’ commonsense knowledge of debugging, giving beginners one of four questions
designed to elicit their knowledge of
debugging strategies. The questions
asked them to describe the advice
they would give people whose lights
did not turn on when they flipped
the switch; how they would locate the
moment things go wrong in the children’s game “telephone”; how they
would find a Starbucks if they were
in a strange city where they did not
speak the language; or an experience
of their own involving troubleshooting.
In general, we found beginners
had less commonsense knowledge of
debugging than of sorting, and some
of their preexisting knowledge did not
serve them well. For example, real-world fixes are often easy to undo, unlike programming changes. Likewise,
the real world is nondeterministic in
ways CS1 programs generally are not;
for example, if your car doesn’t start,
should you immediately turn the key
a second time?
A substantial body of work in computing and in other scientific disciplines, including physics and mathematics, involves misconceptions, or
incorrect concept understandings,
that must be replaced with correct
ones. Clancy6 provided a survey of this
work in CS, and the National Academy’s Committee on Undergraduate
Science Education7 gave a more general overview. Smith et al. 15 challenged
this view in the context of math and
science education, arguing that misconceptions are limited mental models that can be built onto, ultimately
providing a correct understanding of
the concept being studied.
Most relevant to the commonsense
project discussed here is Ben-David
Kolikant’s 2001 work examining student preconceptions about concurrency. 2 She collected data from about
135 Israeli 12th-grade students in six
classes at three different schools. The
students previously studied computing and at the time of the study were
taking an advanced class in concurrent and distributed computing.
At the beginning of the course she
gave them a critical-section prob-
lem in which multiple agents share a
common resource—two ticket offices
selling tickets for the same movie.
As shown in the figure, the question
was posed in a detailed pseudocode
format. It expects a relatively sophis-
ticated answer, including a hardware
system specification for supporting
multiple machines servicing sales re-
quests, pseudocode for the solution,
and an explanation of the answer and
how it avoids duplicate ticket sales.
Student answers were graded as part
of the course.
methodology
Here, we describe our process of data
collection and analysis:
Data collection. In the first week of
the first semester of the 2006–2007
school year, in a CS1 class, students
were randomly assigned one of two
tasks: the concurrency task explored
here completed by 66 students from
five different institutions; the other
was unrelated to the study. The participating students were all beginners
between the ages of 18 and 20. All but
eight completed the questions online
(outside of class) by typing English answers into a text box. Eight students
(all at the same institution) completed the questions on paper in a laboratory setting. All were given credit for
completing the assignment, though
solution quality was not evaluated for
credit. (The participant/subject iden-