Flexible low-cost activities to develop novice code comprehension skills in schools

The lack of code comprehension skills in novice programming students is recognised as a major factor underpinning poor learning outcomes. We use Schulte's Block Model to support teachers' understanding of how to break the skill down into component parts that are more manageable for a learner. This analysis is operationalised in three code annotation-based learning/assessment exercise formats, two helping students to identify and describe programming concepts and the third enabling them to parse code correctly and carry out desk executions. A great benefit of the activities is that they are low cost and can be applied to any imperative style code and so can be easily adopted by schools anywhere; furthermore, they are active, not passive, an issue with some animation-based visualisation approaches. The exercise formats were included as part of a national schools computing science professional learning programme (PLAN C).

[1]  Barbara Ericson,et al.  Using Tracing and Sketching to Solve Programming Problems: Replicating and Extending an Analysis of What Students Draw , 2017, ICER.

[2]  Ari Korhonen,et al.  Roles of Variables in Teaching , 2007, J. Inf. Technol. Educ..

[3]  Mordechai Ben-aft,et al.  Constructivism in computer science education , 1998, SIGCSE '98.

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

[5]  Benedict duBoulay,et al.  Some Difficulties of Learning to Program , 1986 .

[6]  Juha Sorva,et al.  UUhistle: a software tool for visual program simulation , 2010, Koli Calling.

[7]  Kazunori Yamaguchi,et al.  Skill hierarchy revised by SEM and additional skills , 2012, 2012 International Conference on Information Technology Based Higher Education and Training (ITHET).

[8]  Michael Kölling,et al.  Novis: A Notional Machine Implementation for Teaching Introductory Programming , 2016, 2016 International Conference on Learning and Teaching in Computing and Engineering (LaTICE).

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

[10]  Amy J. Ko,et al.  An Explicit Strategy to Scaffold Novice Program Tracing , 2018, SIGCSE.

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

[12]  Sven Apel,et al.  Measuring neural efficiency of program comprehension , 2017, ESEC/SIGSOFT FSE.

[13]  Judy Robertson,et al.  An evaluation of a professional learning network for computer science teachers , 2017, Comput. Sci. Educ..

[14]  Mark A. Holliday,et al.  Using Memory Diagrams When Teaching a Java-Based CS1 , 2003 .

[15]  M. Chi,et al.  The ICAP Framework: Linking Cognitive Engagement to Active Learning Outcomes , 2014 .

[16]  Matthew Hertz,et al.  Trace-based teaching in early programming courses , 2013, SIGCSE '13.

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

[18]  Richard E. Clark,et al.  Why Minimal Guidance During Instruction Does Not Work: An Analysis of the Failure of Constructivist, Discovery, Problem-Based, Experiential, and Inquiry-Based Teaching , 2006 .

[19]  Jorma Sajaniemi,et al.  Factors in novice programmers' poor tracing skills , 2007, ITiCSE.