Demonstrating the Ability of Elementary School Students to Reason About Programs

Over the last decade, CS Education researchers have developed different curricula, resources, and strategies to foster computer science learning in K-12 education. However, there is a lack of research about how elementary school students develop the ability to reason about programs. Reasoning about programs consists of a student's ability to read, write, debug, trace, and predict program behavior. This paper presents results from a think-aloud study of fourth and fifth grade students learning to program in Kodu. The goal of this study was to track students' understanding of how Kodu interprets and executes rules of a program. To understand students' reasoning of program execution, we explicitly taught them the Laws of Kodu computation which govern the decision making and execution process of Kodu rules. We collected students' responses on pre- and post-assessments, and we conducted think-aloud interviews with students where students explained their answers to assessment questions. We found that explicitly teaching students how Kodu rules are interpreted significantly improved their ability to understand the execution of programs and to explain program behavior. The results of this study provide insight into how elementary school students reason about simple programs, and how this ability can be scaffolded.

[1]  David S. Touretzky,et al.  Teaching "Lawfulness" With Kodu , 2016, SIGCSE.

[2]  Tim O'Shea,et al.  The black box inside the glass box: presenting computing concepts to novices , 1999, Int. J. Hum. Comput. Stud..

[3]  Steve Kollmansberger Helping students build a mental model of computation , 2010, ITiCSE '10.

[4]  Elliot Soloway,et al.  Learning to program = learning to construct mechanisms and explanations , 1986, CACM.

[5]  Lionel E. Deimel The uses of program reading , 1985, SGCS.

[6]  Colin J. Fidge,et al.  Further evidence of a relationship between explaining, tracing and writing skills in introductory programming , 2009, ITiCSE.

[7]  Angela Carbone,et al.  Going SOLO to assess novice programmers , 2008, ITiCSE.

[8]  David S. Touretzky,et al.  Semantic Reasoning in Young Programmers , 2017, SIGCSE.

[9]  Juha Sorva,et al.  Exploring programming misconceptions: an analysis of student mistakes in visual program simulation exercises , 2012, Koli Calling.

[10]  David S. Touretzky,et al.  Designing and Refining of Questions to Assess Students' Ability to Mentally Simulate Programs and Predict Program Behavior (Abstract Only) , 2016, SIGCSE 2016.

[11]  Elliot Soloway,et al.  Novice mistakes: are the folk wisdoms correct? , 1986, CACM.

[12]  Michael C. Loui,et al.  Debugging: from novice to expert , 2004, SIGCSE '04.

[13]  Randy Pausch,et al.  Learning to Program with Alice (w/ CD ROM) , 2011 .

[14]  Barry J. Wadsworth Piaget's Theory of Cognitive and Affective Development: Foundations of Constructivism , 2003 .

[15]  Amruth N. Kumar,et al.  A study of the influence of code-tracing problems on code-writing skills , 2013, ITiCSE '13.

[16]  Elliot Soloway,et al.  Analyzing the high frequency bugs in novice programs , 1986 .

[17]  Mark Guzdial,et al.  Learner-Centered Design of Computing Education: Research on Computing for Everyone , 2015, Synthesis Lectures on Human-Centered Informatics.

[18]  David S. Touretzky,et al.  Teaching Kodu with physical manipulatives , 2014, Inroads.

[19]  Mordechai Ben-Ari,et al.  Learning computer science concepts with scratch , 2010, ICER '10.

[20]  Eric Rosenbaum,et al.  Scratch: programming for all , 2009, Commun. ACM.