Information Technology Reference
In-Depth Information
5.5
Debugging
After a solution has been designed and constructed, its correctness should be ex-
amined. Similar to many computer science concepts, checking the correctness of
a solution has both theoretical and technical aspects. In high school classes, it is
sufficient, in most cases, to examine the solution correctness technically with rep-
resentative inputs; in more advanced computer science teaching situations, this dis-
cussion should be expanded and includes also correctness theoretical aspects.
One of the aspects related to solution examination is debugging. It is accepted
that the debugging processes (either with a debugger or without it) may promote
learners' understanding of computer science (cf., for example, Lieberman 1997 ;
Spohrer and Soloway 1986 ). This assertion is based on the fact that while students
consider how their program should be tested and debugged if necessary, they actu-
ally reflect on how they implemented computer science concepts and rethink their
programming process and the decision they made during the program development
(Laakso et al. 2008 ). One may assume that debugging is a skill that comes with
common sense; nevertheless, it is known as a meaningful obstacle in developing
computer programs and even crucial in project development. In recent years, some
attention is given to the skill of debugging in general and to teaching debugging
in particular. For example, Nagvajara and Taskin ( 2007 ) advocate the importance
of teaching debugging skills throughout digital design courses, especially during
the introductory courses, and present teaching techniques for developing students'
debugging skills both for introductory and advanced digital design courses. These
techniques emphasize incremental design stages, test stimuli, observation tech-
niques, and critical thinking. Ahrendt et al. ( 2009 ) describe a new course “Testing,
Debugging, and Verification” which connects formal approaches with real-world
development techniques in a non-traditional and novel way. Their approach views
formalization of specifications as the basis for debugging and test generation tools.
V■rseda et al. ( 2011 ) describe an innovative methodology, based on a logic teaching
tool, to prepare students to use logic as a formal proof technique, including declara-
tive debugging of imperative programs, which should be considered at the basis of
a good software development.
Here we focus on debugging due to its relevance to high school teaching in the
contexts of solution examination. It is also highly relevant, of course, in more ad-
vanced computer science teaching situations, as well as for software practitioners
during the development of software projects.
Unlike other areas in which errors are treated as a negative phenomenon, in CS,
errors and debugging are a fact of life and, accordingly, deserve special attention.
According to the constructivist theory, learning consists of a debugging process
of one's own knowledge. Specifically, learning (of any topic) starts by building
a preliminary (sometimes erroneous) model and then proceeds with shaping it,
through a successive refinement process, into another (more correct) model. In or-
der to start the refinement process, one must acknowledge the fact that one's initial
mental model might be erroneous. With respect to software development, each pro-
gram we write reflects the way in which we conceive the problem we face (Papert
Search WWH ::




Custom Search