Вы находитесь на странице: 1из 16

Received: 12 April 2017 Revised: 20 July 2017 Accepted: 30 December 2017

DOI: 10.1111/jcal.12238

ORIGINAL ARTICLE

ViDA: A virtual debugging advisor for supporting learning in


computer programming courses
V.C.S. Lee1 | Y.T. Yu1 | C.M. Tang2 | T.L. Wong3 | C.K. Poon4

1
Department of Computer Science, City
University of Hong Kong, Hong Kong Abstract
2
Department of Information Systems, City Many students need assistance in debugging to achieve progress when they learn to write com-
University of Hong Kong, Hong Kong puter programs. Face‐to‐face interactions with individual students to give feedback on their pro-
3
Department of Computing Studies and grams, although definitely effective in facilitating their learning, are becoming difficult to achieve
Information Systems, Douglas College, BC, with ever‐growing class sizes. This paper proposes a novel approach to providing practical auto-
Canada
4
mated debugging advice to support students' learning, based on the strong relationship observed
School of Computing and Information
between common wrong outputs and the corresponding common bugs in students' programs. To
Sciences, Caritas Institute of Higher Education,
Hong Kong implement the approach, we designed a generic system architecture and process, and developed
Correspondence a tool called Virtual Debugging Advisor (ViDA) that was put into use in classes in a university. To
Chung Keung Poon, School of Computing and evaluate the effectiveness of ViDA, a controlled experiment and a survey were conducted with
Information Sciences, Caritas Institute of
first year engineering students in an introductory computer programming course. Results are
Higher Education, Hong Kong.
Email: chungkpoon@gmail.com encouraging, showing that (a) a higher proportion of students could correct their faulty code
themselves with ViDA enabled, (b) an overwhelming majority of respondents found ViDA helpful
Funding information for their learning of programming, and (c) most respondents would like to keep ViDA enabled
Research Grants Council of the Hong Kong when they practice writing programs.
Special Administrative Region, China, Grant/
Award Number: Ref.: UGC/FDS11/E02/15

KEY W ORDS

computer science education, debugging, novice programmers

1 | I N T RO D U CT I O N and Higgins (2005) found that although the majority of competent


debuggers are competent programmers, the converse is not necessar-
Learning of computer programming is known to be difficult for many ily true. Therefore, to learners of computer programming, debugging is
beginners (Katai, 2015; Kelleher & Pausch, 2005; Lahtinen, Ala‐Mutka, “harder” than coding, in the sense that debugging is hard even to those
& Järvinen, 2005). Students in introductory programming classes are who can do coding well. There is a practical need to provide assistance
usually required to do a lot of hands‐on practices in writing programs to students on debugging so that students' learning of computer pro-
in order to comprehend the key concepts and develop the relevant gramming will not be severely obstructed by their weakness in finding
skills (Choy, Nazir, Poon, & Yu, 2005; Guzdial & Guo, 2014). During bugs in programs. This is especially true in introductory classes when
practice, students invariably make mistakes in some of their programs many students' coding ability is still at its infancy.
and, hence, have to debug and correct the faults in their code. Conventionally, it is believed that the competence of students in
However, debugging is often non‐trivial and can be very frustrating detecting and fixing bugs depends heavily on their own experience,
to many students. Indeed, debugging is also known to be tedious and logical thinking ability, and coding skills, but novice learners are typi-
time‐consuming even for professional software developers (Parnin & cally weak in all these aspects. Practice is a major learning activity to
Orso, 2011; Tang, Chan, Yu, & Zhang, 2017). Ahmadzadeh, Elliman, acquire these abilities, and so it is very important for learners to do

Dr. V.C.S. Lee is an Assistant Professor in the Department of Computer Science, City University of Hong Kong. His research interest includes data management in
mobile computing systems and computing education. Dr. Y.T. Yu is an Associate Professor in the Department of Computer Science, City University of Hong Kong.
His research interest includes software engineering, software testing, and computers in education. Dr. C.M. Tang is a Graduate Teaching Assistant in the Department
of Information Systems, City University of Hong Kong. His research interest includes software engineering and programming education. Dr. T.L. Wong is a Faculty
Member in the Department of Computing Studies and Information Systems, Douglas College, BC, Canada. His research interest includes data analytics, information
extraction, programming education, and e‐learning. Prof. C.K. Poon is a Professor and the Dean of School of Computing and Information Sciences, Caritas Institute
of Higher Education, Hong Kong. His research interest includes databases and information retrieval, scheduling and planning, and computers in education.

J Comput Assist Learn. 2018;1–16. wileyonlinelibrary.com/journal/jcal © 2018 John Wiley & Sons Ltd 1
2 LEE ET AL.

more practice in a computer programming course (Law, Lee, & Yu, The organization of the rest of this paper is as follows. We first
2010). However, students nowadays will easily lose enthusiasm and briefly review related work in Section 2. Section 3 introduces the
interests in doing programming exercises due to the obstacles encoun- notions of common wrong outputs and common bugs that form the
tered during program debugging, especially when they experience basis of the debugging advice provided by ViDA. In Section 4, we dem-
repetitive failures in coming up with the right code and do not know onstrate how ViDA works with its underlying automated student pro-
whether they are working in a right direction. Hence, a major challenge gram submission and assessment system, PASS, and then delineate the
in programming classes is to upkeep the motivation of students to generic system architecture and process of ViDA. Sections 5 and 6
overcome these obstacles. One way to address the challenge is to pro- present the experiment and survey, respectively, which we conducted
vide timely feedback and advice to students during the debugging pro- to evaluate ViDA, and discuss the corresponding data analysis and
cess. Of course, the presence of an experienced mentor offering face‐ results. Finally, Section 7 concludes the paper.
to‐face assistance and guidance to individual students will make the
learning process much more effective and pleasant. Unfortunately, such
an arrangement is increasingly difficult to achieve in practice and is close 2 | R E L A T E D WO RK
to impossible with ever‐growing sizes of introductory programming
classes against limited manpower and resources (Ala‐Mutka, 2005; Learning computer programming is difficult for beginners because it
Kelleher & Pausch, 2005; Wang & Wong, 2007). Moreover, human involves the simultaneous acquisition of several pieces of new knowl-
mentors cannot operate 24 hr a day to provide on‐demand assistance edge and skills such as program structure, abstraction of problem, for-
to students while the latter are learning at their own pace after hours. mulation of solution, and verification of the program (Guzdial & Guo,
A great deal of research has been conducted in the past with 2014; Kelleher & Pausch, 2005). Cognitive Load Theory (Atkinson &
regard to offering automated assistance to students in the learning of Shiffrin, 1968; Baddeley & Hitch, 1974) explains that the nature of
writing programs (see a brief review in Section 2), but relatively little learning programming can easily overload the limited working memory
work has been done on the provision of automated support on of novice programmers (Moons & De Backer, 2013). Lahtinen et al.
debugging for students in introductory programming classes. One pos- (2005) conducted an international survey of over 500 students and
sible reason is that automated debugging, although being an intensive teachers, which indicated that students found difficulties in learning
research topic, is not yet mature enough to offer precise and practical program structure and concepts. Their study suggested that students
assistance to programmers (Parnin & Orso, 2011; Tang et al., 2017). To had to do programming exercises by themselves, with the aid of care-
precisely identify bugs automatically from general programs remains a fully designed course materials and guidance. Moreover, timely feed-
long‐term research goal that is unlikely to be reachable soon. On the back is important to guide the students when they work on
other hand, there is indeed an imminent practical need to assist stu- programming exercises themselves (Moons & De Backer, 2013;
dents in debugging their own faulty programs, at least at the beginning Odekirk‐Hash & Zachary, 2001; Paiva, Ferreira, & Frade, 2017; Rae &
stage of their learning of computer programming. Samuels, 2011; Choy et al., 2005; Wang & Wong, 2007) and to keep
In this paper, we propose a novel approach to providing practical them motivated in learning (Law et al., 2010). As it is increasingly unre-
debugging advice to support students' learning when they do exercises alistic to expect one‐to‐one interactions and tutoring for typically large
in introductory programming classes. Our goal is neither to teach programming classes, researchers have been building various auto-
debugging per se, nor to automatically locate bugs for students, but mated systems to facilitate student learning and to offer timely feed-
to provide practical and useful advice when they locate bugs them- back to students (Gómez‐Albarrán, 2005; Kelleher & Pausch, 2005;
selves, based on the analysis of common bugs found in past students' Odekirk‐Hash & Zachary, 2001). For example, Satratzemi, Dagdilelis,
programs. We have developed a tool, called Virtual Debugging Advisor and Evagelidis (2001) adopted visualization to reduce the cognitive
(ViDA), to implement the proposed approach. ViDA was used in conjunc- load of learning programming. They developed an education learning
tion with an existing automated system called Programming Assignment environment called AnimPascal to help students understand the differ-
aSsessment System (PASS) for facilitating student learning of computer ent phases (coding, verifying, debugging, etc.) of program develop-
programming (Choy et al., 2005; Law et al., 2010; Yu, Poon, & Choy, ment. Other than visualization systems, some researchers built
2006). ViDA was put into use in classes in a university with strongly interactive development environments that were customized for stu-
encouraging evaluation results. This paper reports the development of dent learning in introductory programming classes based on various
ViDA and the results of our evaluation. Our contributions are threefold: educational theories. For example, Moons and De Backer (2013)
recently designed an interactive learning environment for introductory
• We exploited the strong relationship between common wrong
programming that was influenced by the cognitive load theory and the
outputs and the corresponding common bugs to provide guidance
constructivist paradigm. Hooshyar, Ahmad, Yousefi, Yusop, and Horng
for students when they debug their programs.
(2015) developed the Flowchart‐based Intelligent Tutoring System,
• We developed a novel approach, designed a generic system archi- which is an interactive system to visualize the solution developed by
tecture and process, and built a tool to help improve teaching and individual students to programming problems.
learning in introductory computer programming classes by facili- In a recent literature survey on the teaching of introductory pro-
tating students to receive instant debugging advice. gramming, Pears et al. (2007) identified four major research areas
• We evaluated both the effectiveness of the tool empirically and (i.e., curriculum, pedagogy, languages, and tools) and noted that the
students' perception of its usefulness via a survey. most researched one was on teaching tools, predominantly
LEE ET AL. 3

visualization tools (such as AnimPascal), automated program assess- tracking down logical errors that are specifically related to C++
ment systems (APASs), tutoring, and programming environments, memory management and pointer usage. Caso, Garbervetsky, and
including “microworlds” such as the Robocode framework (Gómez‐ Gorín (2013) integrated a verifying compiler as a plug‐in for the
Albarrán, 2005; Kelleher & Pausch, 2005). They further observed that Eclipse integrated development environment to aid the analysis of
only very few tools have seen wide adoption in practice. programs written in an experimental programming language. In com-
Among the more widely adopted tools for facilitating the learn- parison, ViDA is designed to deal with common bugs found in stu-
ing of computer programming, APASs has grown rapidly in popular- dent programs that produce common wrong outputs. Its application
ity with the advent of GUI and Internet technologies. Automatic is not limited to particular types of bugs or languages in which the
grading tools have been developed as early as in the 1960s, initially program is written.
for economic reasons, but soon it was discovered that students did Another attempt to provide automated feedback to students on
learn better with automatic graders (Hollingsworth, 1960). Over the program bugs was the development of the Independent Student
years, the tools have evolved from rudimentary job control programs Tutoring by Examining Programs (InSTEP) system by Odekirk‐Hash and
to Unix scripts, shell utilities, client–server systems, and Internet‐ Zachary (2001). InSTEP is a Web‐based application that presents to
based systems with distributed architectures (Choy et al., 2005; the student a partial solution of a given programming problem, and
Higgins, Gray, Symeonidis, & Tsintsifas, 2005; Ihantola, Ahoniemi, the student is required to fill in the blanks in the partial solution.
Karavirta, & Seppälä, 2010). Some well‐known APASs include BOSS InSTEP then reports the student's mistakes (if any), together with sug-
(Joy, Griffiths, & Royatt, 2005; Luck & Joy, 1999), CourseMarker gestions for repairing them. The major limitation of InSTEP is that it
(Higgins et al., 2005), HoGG (Morris, 2003), PASS (Choy et al., provides a code template extracted from a small set of preselected
2005; Law et al., 2010), Oto (Tremblay, Guérin, Pons, & Salah, problems to students and only allows students to complete the code
2008), and many others (Gómez‐Albarrán, 2005). Also available now- by filling in certain missing pieces (typically one or two lines or state-
adays are commercial deployment (Pearson Education Inc., 2015) ments) instead of writing a whole program. By contrast, ViDA is
and open source releases, such as ASAP (Douce, Livingstone, & designed to provide debugging advice to whole programs that are
Orwell, 2005) and Web‐CAT (WebCAT, 2015). Many systems cur- entirely written by students as complete solutions to programming
rently in use worldwide have been found to be educationally bene- exercises that are assigned by the instructor in an introductory pro-
ficial in a variety of ways. In particular, PASS was developed in gramming course.
City University of Hong Kong in early 2004 with the primary aim As stated in Section 1, ViDA is designed based on the analysis of
of facilitating student learning of computer programming (Choy common bugs found in students' programs. In this regard, some previ-
et al., 2005). The work reported in this paper was built on the ous research studies (e.g., Ahmadzadeh et al., 2005) have been done to
success of PASS by incorporating a novel approach of providing analyse students' bugs or debugging patterns, but not to provide auto-
debugging advice through an add‐on subsystem, ViDA. mated debugging advice to students. Lam, Chan, Lee, and Yu (2008)
A contemporary APAS generally supports several core tasks: initiated the idea and a preliminary design framework of an automatic
debugging assistant that inspired ViDA, but the latter was built after
• The instructor uploads a programming problem with predefined
substantial redesign and enhancement, integration into PASS, archival
test cases.
analysis, field tests, and adoption in class. Poon, Wong, Yu, Lee, and
• A student reads the problem from the APAS, works to produce a Tang (2016) designed a hierarchical model for the program output
solution, and submit to the system. and developed an approach to automatically analysing the output
• The APAS assesses the student's solution, typically by executing it pattern of students' programs. However, their study focuses on the
with instructor‐prepared test cases, and returns the assessment detection of admissible program output instead of utilizing the
results to the student, including the correctness of the student's debugging advice to enhance students' learning.
solution and other information.

Existing APASs differ in additional capabilities to meet the assess- 3 | C O M M O N WR O N G O U T P U T S A N D


ment needs of different universities, but none of them provide COM M ON BU GS
debugging advice to students when their programs are incorrect, as
what ViDA is aimed at. Programs written by different students may contain different bugs.
One early attempt to improve students' debugging skills was the Debugging is also prone to human errors, which vary among dif-
development of a practicing system called DebugIt (Lee & Wu, ferent individuals. More bugs may be inadvertently introduced
1999). DebugIt contains a bank of 20 problems and a buggy pro- and accumulated while revising the program if the original bugs
gram for each problem. Students using DebugIt are given a faulty cannot be correctly located and fixed during debugging. Our expe-
program to debug. Hints are provided upon request. DebugIt was rience, however, tells us that bugs produced by novice program-
designed to train students on debugging skills using preselected mers can be very similar across different cohorts of students.
manually prepared problems and buggy programs. By contrast, ViDA This information may be exploited so that current students may
seeks to assist students by providing debugging advice when they learn from the mistakes made by past students, thereby accelerat-
debug their own code. Recently, Dereferee (Allevato & Edwards, ing their self‐learning and improvement. To facilitate such learning,
2014) was developed to generate diagnostics to assist students in we have developed a tool to accumulate and analyse the common
4 LEE ET AL.

mistakes of past students, relating the frequently occurring bugs to and “Wrong use of the same variable for the number of seconds
the outputs of the faulty programs when the latter were executed in both input and output,” respectively. Table 2 shows the code of
with instructor predefined test cases. We further utilize such infor- a correct program and two sample faulty programs (Program‐A
mation produced from the above archival analysis and incorporate and Program‐B) with these two common bugs (underlined), together
it into the existing student program assessment system, PASS. with their outputs and the corresponding annotations provided
When another student later makes a similar mistake in his/her by ViDA.
program and then submit it to PASS for assessment, ViDA can
immediately provide customized feedback in the form of
debugging advice based on the outputs of the program, thereby 4 | VIRTUAL DEBUGGING ADVISOR
helping this student to make progress towards revising his/her
program to a correct one. ViDA is designed to be built on PASS, a Web‐based application that
For example, consider the following exercise, Convert_time can be seamlessly integrated with popular e‐learning platforms such
(Problem 1), in an introductory computer programming course. as Blackboard to provide detailed statistics of students' performance
(e.g., success rate) to the instructor and instant feedback to students
Problem 1. Convert_time (Choy et al., 2005; Yu et al., 2006). In this section, we first present a
Write a program, convertTime.c, that reads in the brief overview of PASS in Section 4.1, then demonstrate how ViDA
number of seconds and converts it into hours, minutes, works with an example in Section 4.2, present the system architecture
and seconds. For example, when the input is 5000, the of ViDA in Section 4.3, and describe, in Section 4.4, the process
output should be as follows. through which the instructor devises debugging advice to be automat-
5000 second(s) = 1 hour(s) 23 minute(s) ically provided to students through ViDA.
20 second(s)

Table 1 summarizes our collected past statistics of each wrong


4.1 | Programming assignment assessment system
output of the whole class when the input is 10,000. We observed that
the majority of wrong programs produced the first two outputs, which
(PASS)
we call common wrong outputs for this test case. PASS was first developed in 2004 with the primary aim to assisting
Next, we examined all the faulty programs and found that beginners in learning computer programming. It allows students to
Program‐A and Program‐B in Table 2 were typical in producing the submit their code as many times as needed. For every student pro-
first two common wrong outputs shown in Table 1, respectively. gram submission, PASS instantly returns the results of testing the
Specifically, program against a large set of test cases, and pinpoints the exact
position where the expected output differs from the actual program
• all programs giving the first common wrong output contain the output. This was unlike many other APASs built at the time that typ-
same bug as in Program‐A, and ically return feedback to students after the submission deadline until
• 90% of all programs giving the second common wrong output con- the marking process had completed. Experience shows that, with the
tain the same bug as in Program‐B. instant results from PASS, students are motivated to practice more
extensively and, hence, can learn much more effectively and indepen-
Thus, a strong relationship between a particular common wrong dently (Law et al., 2010).
output and its corresponding bug can be observed in this example. Furthermore, PASS provides a variety of comprehensive online
We call these bugs common bugs. Therefore, an annotation in information of students' performance to the instructor (Choy et al.,
response to a common wrong output that hints at the correspond- 2005; Choy et al., 2008). For example, the bar charts in Figure 1
ing common bug may help most, if not all, students to identify their show the number of students who have attempted or successfully
own bugs. In this example, the annotations can be “Forgot to sub- solved a particular programming problem or a certain number of
tract the number of hours in calculating the number of minutes” problems, respectively. The instructor may make use of such

TABLE 1 Wrong outputs for Convert_time when the input is 10000


Wrong outputa Percentage
b
1. 10000 second(s) = 2 hour(s) 166 minute(s) 40 second(s) 37.9
2.c 40 second(s) = 2 hour(s) 46 minute(s) 40 second(s) 19.0
3. 10000 second(s) = 2 hour(s) 0 minute(s) 40 second(s) 14.7
4. 10000 second(s) = 2 hour(s) 46 minute(s) 3640 second(s) 9.5
5. 10000 second(s) = 46 hour(s) 46 minute(s) 40 second(s) 9.5
6. (others) 9.5
a
The correct output is: 10000 second(s) = 2 hour(s) 46 minute(s) 40 second(s)
b
All programs giving the first wrong output contain the same bug as in Program‐A, shown in Table 2.
c
90% of all programs giving the second wrong output contain the same bug as in Program‐B, shown in Table 2.
LEE ET AL. 5

TABLE 2 Sample programs for Convert_time and their outputs when the input is 10000.
Programs Code, outputs, and annotations

A correct program Code (correct) void main( )


{
int n_sec, hr, min, sec;
cout << “Please enter the number of seconds: ”;
cin >> n_sec;
hr = n_sec / 3600;
min = (n_sec / 60) % 60;
sec = n_sec % 60;
cout << n_sec << “ second(s) = ” << hr << “ hour(s) ” << min << “ minute(s) ” << sec <<
“ second(s) ” << endl;
}
Output (correct) 10000 second(s) = 2 hour(s) 46 minute(s) 40 second(s)
Annotation (None)
Program‐A Code (incorrect) void main( )
(faulty) {
int temp, h, m, s;
cout << “Please enter the number of seconds: ”;
cin >> temp;
h = temp / 3600;
m = temp / 60;
s = temp % 60;
cout << temp << “ second(s) = ” << h << “ hour(s) ” << m << “ minute(s) ” << s << “ second(s) ”
<< endl;
}
Output (incorrect) 10000 second(s) = 2 hour(s) 166 minute(s) 40 second(s)
Annotation Forgot to subtract the number of hours in calculating the number of minutes
Program‐B Code (incorrect) void main( )
(faulty) {
int h, s, m;
cout << “Please enter the number of seconds: ” ;
cin >> s;
h = s / 3600;
m = (s % 3600) / 60;
s = (s % 3600) % 60;
cout << s << “ second(s) = ” << h << “ hour(s) ” << m << “ minute(s) ” << s << “ second(s) ” <<
endl;
}
Output (incorrect) 40 second(s) = 2 hour(s) 46 minute(s) 40 second(s)
Annotation Wrong use of the same variable for the number of seconds in both input and output

information innovatively, not only to better understand the degree of writing programs and submitting them to PASS for testing their
engagement and performance of their students, but also to provide correctness (Figure 2(a)). PASS will automatically test the submission
additional stimuli that motivate students to learn (Wang & Wong, using a number of instructor predefined test cases and, for each test
2007). He/she may, for instance, boost the competitive atmosphere case, compare the program output and the expected output. Referring
of a laboratory class by showing them how many students in the class to the sample Submission History screen in Figure 2(a), for example, the
have currently solved the given problem, or he/she may encourage student (with UserID 51112233) has attempted the problem (Problem
students to do more practice by revealing to them the real‐time sta- 2) called Classify_triangle four times. Classify_triangle is a well‐known
tistics of submissions. Indeed, the statistics can be drilled down to programming problem used by Myers (1979) to illustrate the common
each specific student such that the instructor can easily identify inadequacy of test suites constructed by professional programmers at
exactly which students are lagging behind and, accordingly, offer the time when he authored his classic book on software testing.
timely personal advice and individual assistance. Such specific tailored Figure 2(a) shows that, out of a total of 16 test cases, the student's
assistance, however, requires substantial manpower resources, which program produces correct outputs for 0, 10, 14, and 16 test cases,
has become increasingly difficult to achieve in practice as the class respectively, in four different attempts. If enabled, ViDA will be auto-
size grows. It is partly due to such needs that ViDA was developed matically invoked when the student's program fails a test case. If the
to extend the capability of PASS. program's output matches a common wrong output, ViDA will provide
the feedback in the Test Results table, as shown in Figure 2(b). Each row
below the header row of the Test Results table corresponds to a test
4.2 | Overview of ViDA
case. Reading from the left, each column represents, respectively, the
In this section, we give a demonstration of how ViDA works. Figure 2 (a) test case number, (b) input values, (c) annotation with hints of the
shows the interface of ViDA integrated in PASS. To assign an exercise corresponding common bugs (where applicable), (d) expected output
for students to practice, the instructor may select an existing according to the problem specification, (e) actual output produced by
programming problem from the problem repository of PASS for the student's program, and (f) result of correctness of the actual
students to solve. Students can then attempt to solve the problem by output. Note that a character of the expected output in each row of
6 LEE ET AL.

FIGURE 1 Some online information provided by Programming Assignment aSsessment System (PASS) to the course instructor [Colour figure can
be viewed at wileyonlinelibrary.com]

a failed test case will be highlighted by PASS (in red with yellow Common bugs causing a program to fail this test case:
background), indicating exactly the first position where the expected *** comparing more than two numbers in a single condi-
output deviates from the actual output. tion, e.g.,
“if (a == b == c)” should be written as “if (a == b &&
Problem 2. Classify_triangle
b == c)”
Write a program, classifyTriangle.c, which
In this case, the annotation not only advises what the bug proba-
reads three integer values from the user. The three
bly is, but also tells the student a specific way of how the bug can be
input values are interpreted as representing the
corrected. With this debugging advice, the student can then examine
lengths of the sides of a triangle. The program prints
the program code and debug accordingly if such a bug indeed exists
a message saying whether the triangle is equilateral
in the code.
(all sides equal), isosceles (only two sides equal),
For the third test case (No. 2), the program produces the correct
scalene (all sides unequal), or impossible (cannot
output “isosceles” and therefore, no annotation is displayed. For
form a triangle). A triangle can be formed only if the
the fourth test case (No. 3), the program fails again, producing the
lengths of all the sides of the triangle are positive and
incorrect actual output “isosceles” and the expected output is
it satisfies the triangle inequality, that is, the sum of
“impossible” (This time, the two outputs first differ in the second
the length of any two sides is greater than the length
character, and hence, PASS highlights the character “m” of the
of the third side. For example, when the input values
expected output.). From our past statistics, several common bugs
are “2 3 4,” the output should be the word “scalene”
may cause the program to fail this test case and produce exactly this
(excluding the quotation marks in both the input and
wrong output. Thus, ViDA displays hints of the top three common
output).
bugs to the student as follows, using the number of asterisks to indi-
In Figure 2(b), the actual output of the submitted program for the cate the relative frequency of each bug's occurrence in the past:
first test case (No. 0) is the same as the expected output “scalene”
and hence, the result is correct (“Accepted”). For the second test Common bugs causing a program to fail this test case:
case (No. 1), the expected output is “equilateral” and the actual *** Missing or extra equality sign in the condition for
output is “isosceles” (Note that PASS automatically highlights the validation of triangle inequality
first character of the expected output “e” which is the first one that ** Missing validation of triangle inequality
differs from the actual output.). From our past statistics, the top com- * Classified and outputted the triangle type before
mon bug causing a program to fail this test case and produce this validation of triangle inequality
wrong output lies in the comparison of all three lengths of the trian-
gle within a single condition. ViDA therefore displays the following If the wrong output produced by the student's program does not
debugging advice to the student in the Annotation column of the Test match any of the common wrong outputs in the repository of ViDA,
Results table: the instructor may optionally leave the annotation blank or, perhaps
LEE ET AL. 7

FIGURE 2 Sample screenshots from PASS with Virtual Debugging Advisor (ViDA) enabled or disabled. (a) Sample Submission History screen: The
student may submit a program many times for testing its correctness. (b) Sample Test Results screen: The student's program fails some test
cases* and ViDA is enabled. (c) Sample Test Results screen: The student's program fails some test cases* and ViDA is disabled. (d) Sample Test Results
screen (the same with ViDA enabled or disabled): The student's program is correct*. *Only the results of executing the first four test cases are shown
here [Colour figure can be viewed at wileyonlinelibrary.com]
8 LEE ET AL.

better still, state the specific purpose of the test case to advise the stu- • Annotation Repository collects and stores, for each test case, the
dent which part of the program logic was likely to fail, and therefore, sets of common wrong outputs and associated annotations
should be carefully examined in detail. The annotation is also left blank devised by the instructor for automatic retrieval by Result
if ViDA has not been enabled, as shown in Figure 2(c). Processor.
Finally, for those test cases for which the student's program pro-
duces the correct output, ViDA will not be invoked (no matter whether
ViDA is enabled or disabled) as PASS will inform the student that the 4.4 | Devising debugging advice with ViDA
result is “Accepted” as shown in Figure 2(d).
We now describe the process through which ViDA helps the instructor
identify common bugs from the records of past submissions for devis-
4.3 | System architecture of ViDA
ing annotations that serve as debugging advice to students.
Figure 3 shows the generic system architecture of ViDA. Built on top
of the Web‐based PASS (Yu et al., 2006), ViDA includes several mod- 4.4.1 | Preparation of problems and test cases
ules that interact closely with two modules (namely, Program Execution During the semester, through Test Case Editor/Upload, the instructor
Manager and Submission History Manager) of PASS. Whereas PASS may select or modify an existing programming problem from the prob-
currently supports C, C++, and Java, ViDA and its architecture are both lem repository of PASS, or upload a new problem, together with an
independent of the programming languages used. Hence, ViDA associated set of test cases, for students to work for practice.
supports any new programming language as long as the corresponding
compiler is incorporated in PASS. Interested readers may refer to the 4.4.2 | Program output analysis
paper in Choy et al. (2008) for a description of the architecture and When a student submits a program to solve a problem, PASS tests it
modules of PASS. The modules of ViDA and their interactions are and sends the test results to Result Processor. For each test case, Result
depicted in Figure 3 and described as follows. Processor compares the program output with the expected output pro-
vided by the instructor. If they match, the program is said to pass this
• Test Case Editor/Upload provides an interface for instructors to
test case, that is, the test result is “Accepted” as shown in Figure 2(d).
edit or upload test cases.
Otherwise, Annotation Repository tries to match the wrong output
• Result Processor processes the result of testing the student's sub-
against the stored common wrong outputs of this test case. When a
mitted program by Program Execution Manager in PASS, extracts
match is found, the annotation associated with the wrong output is
from Annotation Repository the annotations associated with the
displayed by Result Processor to the student together with the
wrong outputs, and returns instant feedback to the student (as
correctness result, that is, the result is “Wrong Answer” as shown in
shown in Figure 2).
Figure 2(b). Meanwhile, Submission History Accumulator records this
• Submission History Accumulator assembles all submission details submission and its wrong outputs for subsequent analysis.
(e.g., timestamp, program name, test results) for storage and later
processing by Submission History Manager in PASS. 4.4.3 | Analysis and extraction of common bugs
• Submission Post‐Processor analyses the submission records (which At the end of a semester, the instructor may use ViDA to analyse
include the corresponding test results) that are retrieved by Sub- students' submissions and wrong outputs of each problem. For each
mission History Manager to extract common wrong outputs for test case, the system groups the submissions with the same or similar
instructors to identify common bugs and devise appropriate anno- wrong outputs and analyses the number of submissions in each group,
tations as debugging advice. which is done by Submission Post‐Processor. For each group with a large

FIGURE 3 System architecture of Virtual Debugging Advisor (ViDA). *The two modules, Program Execution Manager and Submission History
Manager, are part of Programming Assignment aSsessment System (PASS) on which ViDA is built [Colour figure can be viewed at
wileyonlinelibrary.com]
LEE ET AL. 9

number of submissions, the instructor has to determine the existence Students were required to solve the problems and submit their
of a common bug among all these submissions in the group. This can programs to PASS as soon as they thought their programs were correct
be done manually while the instructor is reading the code during the within the 1‐hr laboratory classes. This controlled setting could elimi-
grading process. For each identified common bug, the instructor nate, as far as possible, other factors that might affect the evaluation.
devises a useful annotation for guiding students to fix the bug. The pair For example, we could ensure that the submissions were entirely the
of common wrong output and its associated annotation is kept by students' own work within the same amount of class time. PASS would
Annotation Repository. Instructors may also use Annotation Repository verify the correctness of the submitted programs using the predefined
to find out any trends in program bugs for them to prepare courseware test cases and provide instant feedback to students. When there were
and further practice that meet students' need. failed test cases, students could submit their revised programs again
To summarize this section, ViDA is designed to improve teaching after debugging and repeat the submit–debug cycle as long as they
and learning by facilitating needed (see Figure 2(a)). No special arrangements were made to pre-
pare students for the possible use of the ViDA tool. When invoked,
• instructors to analyse student submissions to identify common ViDA was simply seen as one of many functionalities of PASS.
wrong outputs and common bugs, In order to investigate the effect of the use of ViDA, we adopted a

• instructors to devise relevant and useful annotations (based on the crossover experiment design (Senn, 2002). We logically divide the stu-
association of common wrong outputs and common bugs) and dents into two groups, namely Groups A and B, as follows (see Table 3).
store them for automatic retrieval, and This arrangement was designed to contain the possible effects of the
confounding factors of the different students involved and different
• students to test their programs against the set of instructor‐pre-
problems used in the study.
pared test cases, and then receive instant feedback (debugging
advice) when the program fails certain test cases. • Group A worked on Problem 1 Convert_time with ViDA enabled
and Problem 2 Classify_triangle with ViDA disabled.
• Group B worked on Problem 1 Convert_time with ViDA disabled
and Problem 2 Classify_triangle with ViDA enabled.
5 | EVALUATION: EXPERIMENT
In the course, students were enrolled into different laboratory ses-
To evaluate the success of ViDA, we pose two specific research
sions at their own will, of which we had no control. For practical class
questions:
administrative reasons, all students would have to work on the same
problem in the same week. Also, all students within the same labora-
• Did ViDA assist more students to write correct programs after
tory session would have to work with the same ViDA setting (enabled
reading the debugging advice?
or disabled) in the PASS environment to avoid confusion and complica-
• Did students find ViDA helpful in their learning? tions, such as a student finding another student's screen different from
his/hers. Under these practical constraints, we randomly assigned
To answer the first question, we conducted an experiment in the seven laboratory sessions to Group A and the other eight laboratory
controlled setting of practical laboratory classes in a course. To answer sessions to Group B. The total number of students enrolled in the lab-
the second question, we conducted a post‐experiment questionnaire oratory sessions of Group A was 159 and that of Group B was 210,
survey to study students' perception. We describe the experiment respectively. They were required to work on Problem 1 Convert_time
setup and present its results in this section, and report the design in Week 3 and Problem 2 Classify_triangle in Week 4. Students in
and results of the questionnaire survey in Section 6. Group A worked on PASS with ViDA enabled in Week 3 but disabled
in Week 4, and vice versa for those in Group B. All submissions and
records were collected in PASS for analysis. Table 3 summarizes the
5.1 | Experiment setup (logical) arrangements of Groups A and B in the 2 weeks.
Our experimental subjects were first year engineering students of the When a group worked with ViDA enabled, we refer it as the exper-
university who were taking an introductory computer programming imental group to compare the effect of ViDA in contrast to the other
course. The students had no formal training in programming before group, the corresponding control group, who worked with ViDA dis-
attending the course. The classes were conducted by the same instruc- abled. Thus, in Week 3, Group A was the experimental group, and
tors as those in the past years. As before, during the first two labora- Group B was the control group, and vice versa in Week 4. Note that
tory classes, students spent some time to get familiar with the both the grouping into A and B or experimental versus control were
operations of the program development tools (such as the editor,
TABLE 3 Logical grouping of students in the experiment
compiler, and PASS) through writing “Hello world” programs and the
like. In the third and fourth laboratory classes (each lasting for an hour), Number of enrolled (Week 3) (Week 4)
students Convert_time Classify_triangle
students were asked to work on the two typical programming prob-
Group A 159 ViDA enabled (✓) ViDA disabled (✗)
lems selected from the problem repository of PASS, namely, Problem
Group B 210 ViDA disabled (✗) ViDA enabled (✓)
1 Convert_time (see Section 3) and Problem 2 Classify_triangle (see
Section 4.2), respectively. Note. ViDA = Virtual Debugging Advisor.
10 LEE ET AL.

purely done logically for the purpose of analysis of data and results. were asked to work individually. To evaluate whether ViDA assisted
Students themselves were not aware of which groups they belonged students to write correct programs after reading the debugging advice,
to as they simply attended the laboratory sessions and worked on we further examined the number of students who submitted a correct
the two problems as class exercises in the course. solution at the end of the laboratory session after having submitted an
incorrect solution the first time. Among the 33 students in Group A
whose first submitted solutions were incorrect, 28 of them finally sub-
5.2 | Experiment results mitted correct solutions at the end of the laboratory session for
At the end of the 2 weeks, 89 students of Group A and 149 students Problem 1 Convert_time with ViDA enabled, but only 20 for Problem
of Group B submitted programs for both problems in class. Some 2 Classify_triangle with ViDA disabled. For Group B, among the 89 stu-
enrolled students were absent in one or both of the laboratory ses- dents whose first submitted solutions were incorrect, 67 of them
sions and some did not submit their solutions owing to a variety of finally submitted correct solutions at the end of the laboratory
possible reasons (such as insufficient time or inability to keep to the session for Problem 1 Convert_time with ViDA disabled, and 59 for
progress) within one or both of the laboratory sessions. These stu- Problem 2 Classify_triangle with ViDA enabled. All these numbers
dents were asked to continue working on the problems for practice are summarized in Table 4, together with the percentage of students
after classes, but their late submissions were not included in our sub- who finally submitted correct programs after initially submitted incor-
sequent analysis of results. In any case, the two exercises were for rect programs. Table 5 reorganizes these percentages and explicitly
practice purposes only and did not contribute to their formal assess- shows that the percentages for the experimental groups (who worked
ment in the course, that is, there was no penalty for not submitting with ViDA enabled) are consistently higher than those for the corre-
their work. sponding control groups (who worked with ViDA disabled). The differ-
During the laboratory classes, when a correct program was sub- ences in percentages are 9.5% for Problem 1 Convert_time and 5.7%
mitted by the student, no annotation would be provided regardless for Problem 2 Classify_triangle, respectively. Note that because Prob-
of whether ViDA was enabled or not (see Figure 2(d)). On the other lem 2 Classify_triangle is considerably harder than Problem 1
hand, in case of incorrect programs submitted, only students who Convert_time, particularly for the weaker students, a smaller percent-
worked with ViDA enabled would be provided relevant debugging age of students submitted a correct Classify_triangle program at the
advice in the Annotation column (see Figure 2(b)), and students who end of the laboratory sessions. Figure 4 depicts the percentages in
worked with ViDA disabled would still see a blank Annotation column Table 5 visually in the form of bar charts.
(see Figure 2(c)). By way of our experimental design, the consistently positive effect
By virtue of the experiment design, if a student produced a correct of ViDA was evidently independent of the particular problems or
program on the first submission to PASS, then he/she had done so
without reading any annotation provided by ViDA even if it was
TABLE 5 Percentages of students who finally submitted correct pro-
enabled (Figure 2(d)). Indeed, in such a case, as the submission was cor- grams after initially submitted incorrect ones
rect already, the student would actually not need the help of ViDA.
Experimental group Control group with
Because we aimed at evaluating the effectiveness and usefulness of Problem with ViDA enabled (E) ViDA disabled (C) E–C
ViDA, we restricted our analysis to students whose first submissions
1. Convert_time 84.8 (Group A) 75.3 (Group B) 9.5
were incorrect, so that ViDA might have had some effect. There were
2. Classify_triangle 66.3 (Group B) 60.6 (Group A) 5.7
33 such students out of 89 in Group A and 89 out of 149 in Group B
Note. ViDA = Virtual Debugging Advisor.
(Table 4).
With the aid of ViDA, students could benefit from the debugging
advice; otherwise they would not get any hints on debugging as they

TABLE 4 Summary of number of students who submitted correct/


incorrect programs
ViDA
enabled (✓)
or
Problem disabled (✗) Group s x y y/x (%)

1. Convert_time ✓ A 89 33 28 84.8
1. Convert_time ✗ B 149 89 67 75.3
2. Classify_triangle ✓ B 149 89 59 66.3
2. Classify_triangle ✗ A 89 33 20 60.6

Note. ViDA = Virtual Debugging Advisor; s = Number of students who


finally submitted programs for both problems; x = Number of students
who initially submitted incorrect programs; y = Number of students who
finally submitted correct programs after initially submitted incorrect pro-
grams; y/x = Proportion of students who finally submitted correct programs FIGURE 4 Percentages of students in Table 4 shown as bar charts
after initially submitted incorrect programs. [Colour figure can be viewed at wileyonlinelibrary.com]
LEE ET AL. 11

students involved. Hence, the experimental results confirmed that a Question 1 was therefore designed as a control to distinguish between
higher proportion of students could correct their initially faulty pro- students who did or did not read the annotations. Questions 2 to 8
grams when ViDA was enabled. were designed to find out whether students perceived that the anno-
tations might have been helpful to them in various possible specific
ways. For example, Questions 3 and 4 were designed to find out
6 | EVALUATION: SURVEY whether the annotations had increased their awareness of others' bugs
and their own bugs. Question 9 served as an overall indicator of
To answer the research question (“Did students find ViDA helpful in
whether students would like ViDA enabled, regardless of in what spe-
their learning?”), we requested students to complete a questionnaire
cific way they might find it useful or not. Question 10 provided space
anonymously after the laboratory sessions. In this section, we first
for open‐ended comments of any issue students would like to raise.
presented the questions in the questionnaire and then a summary
Our subsequent analysis of students' responses only included the
and analysis of the responses.
questionnaires in which the students responded with strongly agree or
agree to Question 1. We received 166 completed questionnaires with
6.1 | Survey questions such responses. Because the questionnaire was anonymous, there was
no way to identify which respondents submitted a correct solution the
The questionnaire consists of 10 questions as follows. Each of the first
first time, at the end of the class, or none at all. As such, the question-
nine questions contains a statement, and the responses are in a 5‐point
naires were essentially analysed independently of the experiment.
Likert scale, in which scores of 5, 4, 3, 2, and 1 refer to strongly agree,
agree, neutral, disagree, and strongly disagree, respectively. The 10th
question was set to solicit students' general comments in an open‐ 6.2 | Summary and analysis of survey responses
ended format.
Table 6 summarizes the individual percentages of each score for each
of Questions 2 to 9, whereas Figure 5 depicts these percentages
1. I read most of the annotations.
graphically. First, we note that for all the questions, the responses
2. The annotations are easy to understand. were mostly strongly agree and agree. In particular, we observe that
3. The annotations make me aware of common bugs/mistakes.
4. I made similar bugs/mistakes before. • 57.8% of the respondents agreed that they made similar bugs/mis-
takes before (Question 4).
5. The annotations make debugging easier.
• 78.4% of the respondents agreed that the annotations made
6. The annotations help me understand the purpose of each
debugging easier (Question 5).
test case.
• 83.2% of the respondents agreed that the annotations were help-
7. The annotations help me understand the program requirements.
ful for learning programming (Question 8).
8. The annotations are helpful for learning programming.
• 77.7% of the respondents wanted PASS to provide annotations on
9. I want PASS to provide annotations on the common bugs/ the common bugs/mistakes (Question 9).
mistakes.
10. Other comment(s). We conducted statistical tests on the data collected from the sur-
vey. We first calculated the reliability coefficient (α; also known as
Some of the students did not encounter the annotations provided Cronbach's α) of the survey. It essentially measures the internal consis-
by ViDA (e.g., if their first submissions to PASS were already correct). tency and is commonly used when multiple Likert questions are set in a
Because the questionnaires were anonymous, we had no way of survey to determine if the scale is reliable. The α of the survey was
knowing which students did read the annotations and which did not. 0.821. Values of α greater than 0.70 are considered statistically

TABLE 6 Percentages of responses to each question


Percentages of responsesa of each scoreb
Question 5 4 3 2 1

2. The annotations are easy to understand. 12.7 71.1 16.3 0.0 0.0
3. The annotations make me aware of common bugs/mistakes. 13.3 63.3 19.9 3.6 0.0
4. I made similar bugs/mistakes before. 10.2 47.6 34.9 6.6 0.6
5. The annotations make debugging easier. 13.3 65.1 18.1 3.0 0.6
6. The annotations help me understand the purpose of each test case. 13.3 54.2 28.9 3.6 0.0
7. The annotations help me understand the program requirements. 13.3 62.7 22.3 1.2 0.6
8. The annotations are helpful for learning programming. 15.7 67.5 16.3 0.0 0.6
9. I want PASS to provide annotations on the common bugs/mistakes. 22.3 55.4 21.1 1.2 0.0
a b
The total percentages for each question may not be equal to 100 due to rounding. The scores are: 5 = strongly agree, 4 = agree, 3 = neutral, 2 = disagree,
1 = strongly disagree.
12 LEE ET AL.

FIGURE 5 Summary of responses to


individual questions in the survey [Colour
figure can be viewed at wileyonlinelibrary.
com]

significant (Johnson & Wichern, 1998). Hence, the results from the sur- welcomed ViDA. A complete list of written comments is included in
vey are reliable. Appendix A of this paper.
In addition, we conducted statistical hypothesis testing to inves-
tigate the students' perception of ViDA. For each question in the sur- • As a computer programming new learner, it's quite hard for me to
vey, we conducted one‐sample t test, using 3.5 as discerning point correct my mistakes if no annotation is provided. I can easily find
(test value) for mean score, to evaluate significance. The null hypoth- out [from ViDA] what my common mistakes are and benefit a lot
esis is that the mean score is equal to 3.5. Table 7 shows the results from it.
of the tests, including the mean, standard deviation, t value, and p • Can try to understand the mistakes if I am at home.
value. A small p value (<.05) indicates that the null hypothesis should
• I can understand and [am] aware [of] more about the error that I will
be rejected.
make.
There were several interesting findings from the results. First, the
• If PASS [ViDA] can provide annotation, we can know the common
mean score of every question is statistically significantly higher than
mistake even [if] we didn't make this mistake this time.
3.5 (with p value less than .05 or even .001). In particular, Questions
8 and 9 receive the two highest scores of 3.98 and 3.99, respectively. • Some of the mistakes can hardly be found by ourselves.
This shows that students found ViDA helpful for learning and would • The annotations help students to [be] aware [of] common bugs/mis-
like to have ViDA enabled when working on their programming exer- takes. Furthermore, the annotations help students easier to finish
cises. Second, the results of Questions 6 and 7 show that students the program to match the requirements by PASS [ViDA].
agreed that ViDA could help them better understand the purpose of • PASS [ViDA] annotation can help me understand the program and
the test cases and program requirements. Overall, the majority of the check the program.
respondents agreed with the statements in Table 7.
Finally, regarding Question 10, we received a large number of A handful of students explicitly chose to stay ambivalent:
written comments. Consistent with their responses to the preceding
questions, an overwhelming number of students wrote favourable • Neutral

comments on ViDA. Below are some of their comments on why they • No comment

TABLE 7 Statistical t test analysis of survey responses


Statisticsa of the scoresb
Question Mean Standard deviation t valuea p valuea

2. The annotations are easy to understand. 3.96 0.54 11.11 <.001**


3. The annotations make me aware of common bugs/mistakes. 3.86 0.68 6.87 <.001**
4. I made similar bugs/mistakes before. 3.60 0.79 1.68 .047*
5. The annotations make debugging easier. 3.87 0.69 6.98 <.001**
6. The annotations help me understand the purpose of each test case. 3.77 0.72 4.86 <.001**
7. The annotations help me understand the program requirements. 3.87 0.67 7.11 <.001**
8. The annotations are helpful for learning programming. 3.98 0.61 10.01 <.001**
9. I want PASS to provide annotations on the common bugs/mistakes. 3.99 0.70 9.03 <.001**
a
The t value and p value are computed by using the one sample t test. bThe scores are: 5 = strongly agree, 4 = agree, 3 = neutral, 2 = disagree, 1 = strongly
disagree.
*p < .05, **p < .01.
LEE ET AL. 13

On the other hand, a few other students would like to see that the timely and customized debugging advice to students when learning
system improve in efficiency and usability. programming. Instead of simply checking the “all‐or‐nothing” correct-
ness of students' programs by comparing the actual program output
• PASS system should be fast more. of students' submission to the expected output in test cases, instruc-

• The system is a little stubborn sometimes. tors should consider adopting automated or semi‐automated means
of generating customized feedback based on individual students' work.
It is clear that many students did require assistance in debugging This customized feedback can significantly enhance students' learning

and, unlike ViDA, the helpdesk cannot provide instant service around experience and avoid them from getting frustration during debugging.
the clock. In this regard, we believe that ViDA would be especially Another implication is that ViDA can be utilized in Massive Open
helpful to the weaker students so that they would not be undesirably Online Courses (MOOCs) related to programming learning
discouraged during their course of progress in learning to write code. (Vihavainen, Luukkainen, & Kurhila, 2012). People from over the world
Overall, there is supportive evidence from both numerical statis- can enrol to any MOOCs anytime and anywhere. However, the high
tics and qualitative comments that students perceived that the use of dropout rate of MOOCs attracts much attention to researchers, course
ViDA helped to improve their learning experience. providers, developers, and instructors. Onah, Sinclair, and Boyatt
(2014) discussed that one of the possible reason for the dropout from
a computer programming MOOC is the lack of support. ViDA can pro-
7 | C O N CL U S I O N vide guidance for learners to practice their programming skills in a vir-
tual environment.
This paper describes a ViDA built on an automated PASS to provide To conclude, we believe that, by providing instant and customized
debugging advice to students to facilitate their learning of computer feedback, our system is helpful for students to overcome the initial
programming. ViDA enables students to learn effectively on their hurdles they encounter in learning computer programming, rendering
own by analysing their program outputs automatically and, in light of their learning experience more enjoyable and increasing their
common bugs of the past, suggesting probable mistakes they might motivation.
have made. Such feedback not only helps students identify and correct
bugs, but also allows them to better understand the program require- ACKNOWLEDGEMENT
ments and the purpose of each test case by knowing the cause of The work described in this paper is fully supported by a grant from the
errors. The latter ability is also essential for both program testing and Research Grants Council of the Hong Kong Special Administrative
debugging. Although ViDA is a customized tool that integrates with Region, China (Project UGC/FDS11/E02/15).
PASS only, its architecture and process are generic that can be applied
to other automated program assessment tools and environments in ORCID
other universities.
V.C.S. Lee http://orcid.org/0000-0003-2596-1257
This paper also reports the evaluation of the effectiveness and
Y.T. Yu http://orcid.org/0000-0002-6548-5446
usefulness of ViDA by means of a controlled experiment and a student
C.M. Tang http://orcid.org/0000-0003-2842-6196
survey. The findings are encouraging, showing that a higher proportion
T.L. Wong http://orcid.org/0000-0002-4581-9912
of students could correct their faulty programs with ViDA enabled and
C.K. Poon http://orcid.org/0000-0002-8508-5060
the majority of students found ViDA helpful for learning computer pro-
gramming. Indeed, instructors have made anecdotal observations that RE FE RE NC ES
students generally seem to be better motivated and more persistent
Ahmadzadeh, M., Elliman, D., & Higgins, C. (2005). An analysis of patterns
in working with the programming exercises, given the instant of debugging among novice computer science students. Proceedings of
debugging guidance now available when they learned on their own. the 10th Annual SIGCSE Conference on Innovation and Technology in
Computer Science Education, pp. 84‐88.
ViDA was designed to offer students automated individual assis-
tance so that their learning of computer programming will not be Ala‐Mutka, K. M. (2005). A survey of automated assessment approaches for
programming assignments. Computer Science Education, 15(2), 83–102.
unduly obstructed by their weakness in bug finding. Precisely what
Allevato, A., & Edwards, S. H. (2014). Dereferee: Instrumenting C++
form and amount of debugging advice are conducive to proper learning
pointers with meaningful runtime diagnostics. Software: Practice and
may need further research, but ultimately, the instructors, who know Experience, 44(8), 973–997. https://doi.org/10.1002/spe.2184.
the students best, have to decide what exact information should be Atkinson, R. C., & Shiffrin, R. M. (1968). Human memory: A proposed
put into the annotation to be provided by ViDA. The proposed frame- system and its control processes. The Psychology of Learning and
work of ViDA allows sufficient flexibility for the instructors to custom- Motivation: Advances in Research and Theory, 3, 89–195.

ize the annotations to their best need. Baddeley, A., & Hitch, G. J. (1974). Working memory. Recent Advances in
Learning and Motivation, 8, 47–90.
Our study provides several implications in practice of learning and
teaching. Our study shows that effort should be made to help students Caso, G., Garbervetsky, D., & Gorín, D. (2013). Integrated program
verification tools in education. Software: Practice and Experience, 43(4),
in learning debugging, so as to upkeep students' motivation in learning
403–418. https://doi.org/10.1002/spe.2143.
programming. Providing timely and useful advice is proved to be effec-
Choy, M., Nazir, U., Poon, C. K., & Yu, Y. T. (2005). Experiences in using
tive to engage students in their learning in many different literatures. an automated system for improving students' learning of computer
Our study substantiates the findings of the usefulness of providing programming. Lecture Notes in Computer Science, 3583, 267–272.
14 LEE ET AL.

Choy, M., Lam, S., Poon, C. K., Wang, F. L., Yu, Y. T., & Yuen, L. (2008). International Conference on Education and New Learning Technologies,
Design and implementation of an automated system for assessment pp. 5825–5834.
of computer programming assignments. Lecture Notes in Computer Paiva, R. C., Ferreira, M. S., & Frade, M. M. (2017). Intelligent tutorial sys-
Science, 4823, 584–596. tem based on personalized system of instruction to teach or remind
Douce, C., Livingstone, D., & Orwell, J. (2005). Automatic test‐based mathematical concepts. Journal of Computer Assisted Learning, 33(4),
assessment of programming: A review. ACM Journal of Educational 370–381.
Resources in Computing, 5(3), Article 4. Parnin, C. & Orso, A. (2011). Are automated debugging techniques actually
Gómez‐Albarrán, M. (2005). The teaching and learning of programming: helping programmers? Proceedings of the 2011 International Symposium
A survey of supporting software tools. The Computer Journal, 48(2), on Software Testing and Analysis, pp. 199–209.
130–144. Pears, A., Seidman, S., Malmi, L., Mannila, L., Adams, E., Bennedsen, J., …
Guzdial, M., & Guo, P. (2014). The difficulty of teaching programming Paterson, J. (2007). A survey of literature on the teaching of introduc-
languages, and the benefits of hands‐on learning. Communications of tory programming. ACM SIGCSE Bulletin, 39(4), 204–223.
the ACM, 57(7), 10–11. Pearson Education Inc. (July 2015). MyProgrammingLab. Retrieved from
Higgins, C. A., Gray, G., Symeonidis, P., & Tsintsifas, A. (2005). Automated http://www.myprogramminglab.com/.
assessment and experiences of teaching programming. ACM Journal Poon, C. K., Wong, T. L., Yu, Y. T., Lee, C. S. & Tang, C. M. (2016). Toward
on Educational Resources in Computing, 5(3), Article 5. more robust automatic analysis of student program outputs for assess-
Hollingsworth, J. (1960). Automatic graders for programming classes. ment and learning. Proceedings of the 2016 IEEE 40th Annual Computer
Communications of the ACM, 3(10), 528–529. Software and Applications Conference (COMPSAC), pp. 780–785.

Hooshyar, D., Ahmad, R. B., Yousefi, M., Yusop, F. D., & Horng, S.‐J. (2015). Rae, A., & Samuels, P. (2011). Web‐based personalised system of instruc-
A flowchart‐based intelligent tutoring system for improving problem‐ tion: An effective approach for diverse cohorts with virtual learning
solving skills of novice programmers. Journal of Computer Assisted environments? Computers & Education, 57, 2423–2431.
Learning, 31(4), 435–449. Satratzemi, M., Dagdilelis, V. & Evagelidis, G. (2001). A system for program
Ihantola, P., Ahoniemi, T., Karavirta, V. & Seppälä, O. (2010). Review of visualization and problem‐solving path assessment of novice program-
recent systems for automatic assessment of programming assignments. mers. Proceedings of the 6th Annual Conference on Innovation and
Proceedings of the 10th Koli Calling International Conference on Comput- Technology in Computer Science Education, pp. 137–140.
ing Education Research, pp. 86–93. Senn, S. (2002). Cross‐over trials in clinical research (Vol. 5). New Jersey:
Johnson, R. A., & Wichern, D. W. (1998). Applied multivariate statistical anal- John Wiley & Sons.
ysis. USA: Prentice‐Hall International Inc. Tang, C. M., Chan, W. K., Yu, Y. T., & Zhang, Z. (2017). Accuracy graphs of
spectrum‐based fault localization formulas. IEEE Transactions on Reli-
Joy, M., Griffiths, N., & Royatt, R. (2005). The BOSS online submission and
ability, 66(2), 403–424.
assessment system. ACM Journal on Educational Resources in Computing,
5(3), Article 2. Tremblay, G., Guérin, F., Pons, A., & Salah, A. (2008). Oto, a generic and
extensible tool for marking programming assignments. Software: Prac-
Katai, Z. (2015). The challenge of promoting algorithmic thinking of both
tice and Experience, 38(3), 307–333. https://doi.org/10.1002/spe.839.
sciences‐ and humanities‐oriented learners. Journal of Computer
Assisted Learning, 31(4), 287–299. Vihavainen, A., Luukkainen, M. & Kurhila, J. (2012). Multi‐faceted support
for MOOC in programming. Proceedings of the 13th Annual Conference
Kelleher, C., & Pausch, R. (2005). Lowering the barriers to programming: A
on Information Technology Education, pp. 171–176.
taxonomy of programming environments and languages for novice pro-
grammers. ACM Computing Surveys, 37(2), 83–137. Wang, F. L. & Wong, T. L. (2007). Effective teaching and learning of
computer programming with large class size. Proceedings of the 1st
Lahtinen, E., Ala‐Mutka, K. & Järvinen, H. (2005). A study of the difficulties
Symposium on Hybrid Learning, pp. 55‐65.
of novice programmers. Proceedings of the 10th Annual SIGCSE Confer-
ence on Innovation and Technology in Computer Science Education, WebCAT. (July 2015). The Web‐CAT Community. Retrieved from http://
pp. 14‐18. web‐cat.org/.

Lam, M. S. W., Chan, E. Y. K., Lee, V. C. S., & Yu, Y. T. (2008). Designing an Yu, Y. T., Poon, C. K., & Choy, M. (2006). Experiences with PASS:
automatic debugging assistant for improving the learning of computer Developing and using a Programming Assignment aSsessment System.
programming. Lecture Notes in Computer Science, 5169, 359–370. Proceedings of the 6th International Conference on Quality Software
(QSIC), pp. 360–365.
Law, K. M. Y., Lee, V. C. S., & Yu, Y. T. (2010). Learning motivation in
e‐learning facilitated computer programming courses. Computers &
Education, 55(1), 218–228.
How to cite this article: Lee VCS, Yu YT, Tang CM, Wong TL,
Lee, G. C., & Wu, J. C. (1999). Debug It: A debugging practicing system.
Computers & Education, 32(2), 165–179.
Poon CK. ViDA: A virtual debugging advisor for supporting
learning in computer programming courses. J Comput Assist
Luck, M., & Joy, M. (1999). A secure on‐line submission system. Software:
Practice and Experience, 29(8), 721–740. Learn. 2018;1–16. https://doi.org/10.1111/jcal.12238
Moons, J., & De Backer, C. (2013). The design and pilot evaluation of an
interactive learning environment for introductory programming influ-
enced by cognitive load theory and constructivism. Computers & APPENDIX A
Education, 60(1), 368–384.
The following are the written comments received from the survey.
Morris, D. S. (2003). Automatic grading of student's programming assign-
ments: An interactive process and suite of programs. Proceedings of
Each bullet point refers to the written comment by a student:
the 33rd ASEE/IEEE Frontiers in Education Conference, pp. S3F‐1–6.
Myers, G. J. (1979). The art of software testing (1st ed.). New Jersey: Wiley. • A good software that help student learn independent.
Odekirk‐Hash, E. & Zachary, J. L. (2001). Automated feedback on programs • Amazing!
means students need less help from teachers. Proceedings of the 32nd
SIGCSE Technical Symposium on Computer Science Education, pp. 55–59. • As a computer programming new learner, it's quite hard for me to

Onah, D. F. O., Sinclair, J. & Boyatt, R. (2014). Dropout rates of massive correct my mistakes if no annotation is provided. I can easily find
open online courses: Behavioural patterns. Proceedings of the 6th out what my common mistakes are and benefit a lot from it.
LEE ET AL. 15

• Because I can know what's wrong with my program. • It makes life easier.
• Because I can learn much easier. • It makes little difference.
• Because I want to know what the mistakes are and I want to • It makes the job of debugging by hand easier.
improve my skills. • It makes users debug the program more easily.
• Because it helps me make debugging easier. • It will lag during in the tutorial lesson.
• Can try to understand the mistakes if I am at home. • It's easy to use.
• Cheer up. • It's good to learn from mistakes.
• Easy to correct my mistakes. • It's useful for me to avoid some common bugs.
• Easy to test. • Let me easy to know what I am done wrong.
• Easy to understand. • Neutral.
• Facilitate learning. • No comment.
• Finish the tutorial. • Not enough time to do classwork.
• For the sake of user friendliness, this makes programming, • Not just to know what the program is wrong, but to revise the
debugging exactly, more easy. detail of programming.
• Give me comparison. • PASS annotation can help me understand the program and check
• Help me to find out my mistakes quickly. the program.
• Helpful. • PASS is useful to check the problems of the program.
• I agree because I can notice the mistake I made very soon. • PASS system should be fast more.

• I can find my mistakes easily. • Prevent the common mistakes perform again.
• I can find out my mistake easier. • Quite user friendly.
• I can know where the problems are. • So I'll not make that mistakes again.
• I can understand and aware more about the error that I will make. • Some of the mistakes can hardly be found by ourselves.

• I could know more about the common bugs. • Students can learn from mistakes and will not make those mistakes
• I don't mind if PASS do so. next time.

• I forgot to, or I don't even know the logic behind like a + b <= c • Take reference and avoid making those mistakes in the future.

• I know the mistakes. • The PASS do help me to find out what's wrong with my
programme.
• If PASS can provide annotation, we can know the common
mistake even we didn't make this mistake this time. • The PASS is quite not user friendly. It always told me I am wrong
because of a space.
• It can give me more opinions.
• The PASS system help me make the format of program better.
• It can help me to learn more common mistakes.
• The PASS system input the difference situation to test the
• It can help me understand the program logic.
program. Let me find bugs easily.
• It can make me easier to understand my mistakes.
• The PASS system is useful for checking outcome.
• It can suggest me to make corrections.
• The annotation always remind me of spaces which are useless in
• It can tell me what is exactly required in the task.
code writing.
• It gives details about my mistakes and help me to improve.
• The annotation is more understandable and user friendly.
• It helps me to learn faster.
• The annotations can let me know easily what bugs would be made.
• It is because some careless mistakes that may not cause a bug to • The annotations help students to aware common bugs/mistakes.
the program cannot debug by the program, but PASS can do it
Furthermore, the annotations help students easier to finish the
and find it out. This lead us to write more accurate and perfect
program to match the requirements by PASS.
programs.
• The helper is very useful, as doing a program face a lot of
• It is comparatively abstract for debugging details. problem, by reading the notes which cannot tell you the practical
• It is convenient. situation.
• It is easier for me to remember. • These annotations give useful advise which really helpful for
• It is helpful for learning programming. debugging.

• It is helpful in debugging. • This make me easier to understand the problems.

• It is useful to improve my skill. • To make sure not make mistakes again.


16 LEE ET AL.

• To prevent simple mistakes. • We usually make the alike common mistakes.


• Tutor can help me. • Because it is convenient.
• Useful. • Easy to debug.
• Useful. • Easy to identify the bugs.
• User friendly, and correct my ans if I don't know the answer. • Easy to understand the mistakes & take the correction.

• Very good. • Easy to understand what is my mistake.


• Very lag. • Help to understand.
• We can avoid making the common mistakes. • The system is a little stubborn sometimes.
• We need to know how we make mistakes more clearly. • Very good.

Вам также может понравиться