Expression of Abstraction: Self Explanation in Code Production

Novices struggle with the implementation of algorithms in code. Assessments asking students to describe algorithms in code have shown that use of abstractions in the descriptions have correlated with students' ability to produce algorithms in code. In this study, 24 introductory computer science students were asked to think out loud while writing code involving simple array algorithms in an online system. Student statements were classified based on the level of abstraction used in the statement. An analysis of the statements revealed that students with greater proficiency at writing code were more likely to use multiple levels of abstraction when describing the code they were writing, and moved between levels with higher frequency than less proficient students. The results align with self explanation research and provide insight into the cognitive mechanisms responsible for the transfer between the skills of reading and writing code.

[1]  Neil Charness,et al.  The role of practice and coaching in entrepreneurial skill domains: An international comparison of life-span chess skill acquisition. , 1996 .

[2]  Anne Venables,et al.  A closer look at tracing, explaining and code writing skills in the novice programmer , 2009, ICER '09.

[3]  Ann L. Brown,et al.  How people learn: Brain, mind, experience, and school. , 1999 .

[4]  Tony Clear,et al.  An Australasian study of reading and comprehension skills in novice programmers, using the bloom and SOLO taxonomies , 2006 .

[5]  Margaret M. Recker,et al.  Learning Strategies and Transfer in the Domain of Programming , 1994 .

[6]  Matthew C. Jadud A First Look at Novice Compilation Behaviour Using BlueJ , 2005, Comput. Sci. Educ..

[7]  Sue Fitzgerald,et al.  'Explain in plain English' questions: implications for teaching , 2012, SIGCSE '12.

[8]  Carsten Schulte,et al.  Block Model: an educational model of program comprehension as a tool for a scholarly approach to teaching , 2008, ICER '08.

[9]  Raymond Lister,et al.  Relationships between reading, tracing and writing skills in introductory programming , 2008, ICER '08.

[10]  James D. Herbsleb,et al.  Program comprehension as fact finding , 2007, ESEC-FSE '07.

[11]  Quintin I. Cutts,et al.  The abstraction transition taxonomy: developing desired learning outcomes through the lens of situated cognition , 2012, ICER '12.

[12]  M. Chi,et al.  From things to processes: A theory of conceptual change for learning science concepts , 1994 .

[13]  J. R. Landis,et al.  The measurement of observer agreement for categorical data. , 1977, Biometrics.

[14]  John R. Anderson,et al.  The LISP tutor: it approaches the effectiveness of a human tutor , 1985 .

[15]  Leigh Ann Sudol-DeLyser,et al.  Code comprehension problems as learning events , 2012, ITiCSE '12.

[16]  Matthew W. Lewis,et al.  Self-Explonations: How Students Study and Use Examples in Learning to Solve Problems , 1989, Cogn. Sci..

[17]  Raymond Lister,et al.  Not seeing the forest for the trees: novice programmers and the SOLO taxonomy , 2006, ITICSE '06.

[18]  Jens Bennedsen,et al.  Abstraction ability as an indicator of success for learning computing science? , 2008, ICER '08.