Exploring programming misconceptions: an analysis of student mistakes in visual program simulation exercises

Visual program simulation (VPS) is a form of interactive program visualization in which novice programmers practice tracing computer programs: using a graphical interface, they are expected to correctly indicate each consecutive stage in the execution of a given program. Naturally, students make mistakes during VPS; in this article, we report a study of such mistakes. Visual program simulation tries to get students to act on their conceptions; a VPS-supporting software system may be built so that it reacts to student behaviors and provides feedback tailored to address suspected misconceptions. To focus our efforts in developing the feedback given by our VPS system, UUhistle, we wished to identify the most common mistakes that students make and to explore the reasons behind them. We analyzed the mistakes in over 24,000 student-submitted solutions to VPS assignments collected over three years. 26 mistakes stood out as relatively common and therefore worthy of particular attention. Some of the mistakes appear to be related to usability issues and others to known misconceptions about programming concepts; others still suggest previously unreported conceptual difficulties. Beyond helping us develop our visualization tool, our study lends tentative support to the claim that many VPS mistakes are linked to programming misconceptions and VPS logs can be a useful data source for studying students' understandings of CS1 content.

[1]  Orit Hazzan,et al.  Partonomy and taxonomy in object-oriented thinking: junior high school students' perceptions of object-oriented basic concepts , 2006, ITiCSE-WGR '06.

[2]  J. Roschelle,et al.  Misconceptions Reconceived: A Constructivist Analysis of Knowledge in Transition , 1994 .

[3]  Niko Myller Automatic Generation of Prediction Questions during Program Visualization , 2007, Electron. Notes Theor. Comput. Sci..

[4]  Mark Guzdial,et al.  Assessing fundamental introductory computing concept knowledge in a language independent manner , 2010 .

[5]  Thomas L. Naps,et al.  Exploring the role of visualization and engagement in computer science education , 2003, ITiCSE-WGR '02.

[6]  Simon,et al.  Assignment and sequence: why some students can't recognise a simple swap , 2011, Koli Calling.

[7]  Juha Sorva,et al.  Visual program simulation in introductory programming education , 2012 .

[8]  Ann E. Fleury Parameter passing: the rules the students construct , 1991, SIGCSE '91.

[9]  Juha Sorva,et al.  Recognizing Programming Misconceptions - An analysis of the data collected from the UUhistle program simulation tool , 2012 .

[10]  Juha Sorva Students' understandings of storing objects , 2007 .

[11]  Mordechai Ben-Ari,et al.  A long-term investigation of the comprehension of OOP concepts by novices , 2005, Comput. Sci. Educ..

[12]  Robert McCartney,et al.  Introducing the ACM Transactions on Computing Education , 2009, TOCE.

[13]  Michael Thuné,et al.  Novice Java programmers' conceptions of "object" and "class", and variation theory , 2005, ITiCSE '05.

[14]  Derek Sleeman,et al.  Pascal and High School Students: A Study of Errors , 1986 .

[15]  Douglas B. Clark,et al.  An Overview of Conceptual Change Theories. , 2007 .

[16]  Juha Sorva,et al.  Notional machines and introductory programming education , 2013, TOCE.

[17]  Derek H. Sleeman,et al.  A Summary of Misconceptions of High School Basic Programmers , 1984 .

[18]  F. Marton Our Experience of the Physical World , 1993 .

[19]  Rebecca T. Mercuri,et al.  Identifying and correcting Java programming errors for introductory computer science students , 2003, SIGCSE.

[20]  Anders Berglund,et al.  Introductory programming and the didactic triangle , 2010, ACE '10.

[21]  Linxiao Ma,et al.  Investigating and improving novice programmers’ mental models of programming concepts , 2007 .

[22]  P. Strevens Iii , 1985 .

[23]  Richard E. Mayer,et al.  A diagnosis of beginning programmers' misconceptions of BASIC programming statements , 1983, Commun. ACM.

[24]  J. Stasko,et al.  A Meta-Study of Algorithm Visualization Effectiveness , 2002, J. Vis. Lang. Comput..

[25]  Andrea A. diSessa,et al.  The Cambridge Handbook of the Learning Sciences: A History of Conceptual Change Research , 2005 .

[26]  Marja Kuittinen,et al.  A study of the development of students' visualizations of program state during an elementary object-oriented programming course , 2008, JERC.

[27]  Benedict du Boulay,et al.  Some Difficulties of Learning to Program , 1986 .

[28]  Andrea A. diSessa,et al.  A History of Conceptual Change Research , 2014 .

[29]  Mark Woodman,et al.  Avoiding object misconceptions , 1997, SIGCSE '97.

[30]  Arnold Pears,et al.  mJeliot: a tool for enhanced interactivity in programming instruction , 2011, Koli Calling.