Sometimes, Rainfall Accumulates: Talk-Alouds with Novice Functional Programmers

When functional programming is used in studies of the Rainfall problem in CS1, most students seem to perform fairly well. A handful of students, however, still struggle, though with different surface-level errors than those reported for students programming imperatively. Prior research suggests that novice programmers tackle problems by refining a high-level program schema that they have seen for a similar problem. Functional-programming students, however, have often seen multiple schemas that would apply to Rainfall. How do novices navigate these choices? This paper presents results from a talk-aloud study in which novice functional programmers worked on Rainfall. We describe the criteria that drove students to select, and sometimes switch, their high-level program schema, as well as points where students realized that their chosen schema was not working. Our main contribution lies in our observations of how novice programmers approach a multi-task planning problem in the face of multiple viable schemas.

[1]  Matthias Felleisen,et al.  How to Design Programs , 2001 .

[2]  Robert S. Rist Knowledge Creation and Retrieval in Program Design: A Comparison of Novice and intermediate Student Programmers , 1991, Hum. Comput. Interact..

[3]  Robert S. Rist Schema Creation in Programming , 1989, Cogn. Sci..

[4]  Bruria Haberman,et al.  Pattern-oriented instruction and its influence on problem decomposition and solution construction , 2007, ITiCSE.

[5]  Arto Vihavainen,et al.  Break statement considered , 2016, Inroads.

[6]  Jacqueline L. Whalley,et al.  A qualitative think-aloud study of novice programmers' code writing strategies , 2014, ITiCSE '14.

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

[8]  P. Pirolli,et al.  The role of learning from examples in the acquisition of recursive programming skills. , 1985 .

[9]  Sally Fincher,et al.  Aspects of Graduateness in Computing Students' Narratives , 2016, ICER.

[10]  Kathi Fisler,et al.  On the Interplay Between Bottom-Up and Datatype-Driven Program Design , 2016, SIGCSE.

[11]  Elliot Soloway,et al.  Simulating Student Programmers , 1989, IJCAI.

[12]  Petri Ihantola,et al.  Do we know how difficult the rainfall problem is? , 2015, Koli Calling.

[13]  Beth Simon,et al.  Phenomenography and grounded theory as research methods in computing education research field , 2012, Comput. Sci. Educ..

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

[15]  Kathi Fisler,et al.  The recurring rainfall problem , 2014, ICER '14.

[16]  Alireza Ebrahimi,et al.  Novice programmer errors: language constructs and plan composition , 1994, Int. J. Hum. Comput. Stud..

[17]  John R. Anderson,et al.  Learning to Program , 1983, IJCAI.

[18]  Simon,et al.  Soloway's Rainfall Problem Has Become Harder , 2013, 2013 Learning and Teaching in Computing and Engineering.

[19]  R. Catrambone The subgoal learning model: Creating better examples so that students can solve novel problems. , 1998 .

[20]  Mark Toleman,et al.  Teaching and assessing programming strategies explicitly , 2009, ACE '09.