Teaching and learning recursive programming: a review of the research literature

Hundreds of articles have been published on the topics of teaching and learning recursion, yet fewer than 50 of them have published research results. This article surveys the computing education research literature and presents findings on challenges students encounter in learning recursion, mental models students develop as they learn recursion, and best practices in introducing recursion. Effective strategies for introducing the topic include using different contexts such as recurrence relations, programming examples, fractal images, and a description of how recursive methods are processed using a call stack. Several studies compared the efficacy of introducing iteration before recursion and vice versa. The paper concludes with suggestions for future research into how students learn and understand recursion, including a look at the possible impact of instructor attitude and newer pedagogies.

[1]  John R. Anderson,et al.  Learning Flow of Control: Recursive and Iterative Procedures , 1986, Hum. Comput. Interact..

[2]  Bruria Haberman,et al.  The case of base cases: why are they so difficult to recognize? student difficulties with recursion , 2002, ITiCSE '02.

[3]  Claudio Mirolo Is iteration really easier to learn than recursion for CS1 students? , 2012, ICER '12.

[4]  Shirley Booth The Expertise of Learning to Program. Example: Recursion , 1992, PPIG.

[5]  Sylvia da Rosa,et al.  A Study about Students' Knowledge of Inductive Structures , 2012, PPIG.

[6]  David Ginat,et al.  Teaching recursion in a procedural environment—how much should we emphasize the computing model? , 1999, SIGCSE '99.

[7]  Eric S. Roberts,et al.  Thinking recursively , 1986 .

[8]  Kevin F. Collis,et al.  Evaluating the Quality of Learning: The SOLO Taxonomy , 1977 .

[9]  Jim E. Greer,et al.  A Comparison of Instructional Treatments for Introducing Recursion , 1989, Comput. Sci. Educ..

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

[11]  Janche Sang,et al.  An empirical analysis of debugging performance - differences between iterative and recursive constructs , 2000, J. Syst. Softw..

[12]  Michael J. O'Grady,et al.  Practical Problem-Based Learning in Computing Education , 2012, TOCE.

[13]  Ian Douglas Sanders,et al.  Mental models of recursion revisited , 2006, ITICSE '06.

[14]  Ian Douglas Sanders,et al.  Mental models of recursion: investigating students' understanding of recursion , 2010, ITiCSE '10.

[15]  Sue Fitzgerald,et al.  Bug Infestation!: A Goal-Plan Analysis of CS2 Students' Recursive Binary Tree Solutions , 2015, SIGCSE.

[16]  Christian Rinderknecht,et al.  A Survey on Teaching and Learning Recursive Programming , 2014, Informatics Educ..

[17]  B. Bloom,et al.  Taxonomy of Educational Objectives. Handbook I: Cognitive Domain , 1966 .

[18]  Ian Douglas Sanders,et al.  Mental models of recursion , 2003, SIGCSE.

[19]  Hank Kahney,et al.  What do novice programmers know about recursion , 1983, CHI '83.

[20]  Richard Lehrer,et al.  Conjectures concerning the Origins of Misconceptions in Logo , 1988 .

[21]  Calvin Lin,et al.  A structured approach to teaching recursion using cargo-bot , 2014, ICER '14.

[22]  Roy D. Pea,et al.  Children's Mental Models of Recursive Logo Programs , 1985 .

[23]  Susan Wiedenbeck,et al.  Learning Iteration and Recursion from Examples , 1989, Int. J. Man Mach. Stud..

[24]  Claudio Mirolo,et al.  Learning (through) recursion: a multidimensional analysis of the competences achieved by CS1 students , 2010, ITiCSE '10.

[25]  Alan C. Benander,et al.  Recursion vs. Iteration: An Empirical Study of Comprehension , 1996, J. Syst. Softw..

[26]  Benjamin S. Bloom,et al.  Taxonomy of Educational Objectives: The Classification of Educational Goals. , 1957 .

[27]  David Ginat The Suitable Way is Backwards, but They Work Forward , 2005 .

[28]  John R. Anderson,et al.  Learning to program recursive functions , 1988 .

[29]  Susan Wiedenbeck Learning recursion as a concept and as a programming technique , 1988, SIGCSE '88.

[30]  Gordon I. McCalla,et al.  Supporting the Learning of Recursive Problem Solving , 1994, Interact. Learn. Environ..

[31]  Sue Fitzgerald,et al.  Recursion vs. Iteration: An Empirical Study of Comprehension Revisited , 2015, SIGCSE.

[32]  Edgar G. Daylight,et al.  Dijkstra's Rallying Cry for Generalization: The Advent of the Recursive Procedure, Late 1950s-Early 1960s , 2011, Comput. J..

[33]  Daniel Zingaro,et al.  Peer Instruction in computing: The value of instructor intervention , 2014, Comput. Educ..

[34]  J. Piaget,et al.  The Kolb Learning Style Inventory — Version 3 . 1 2005 Technical Specifi cations , 2005 .

[35]  Cheng-Chih Wu Conceptual models and individual cognitive learning styles in teaching recursion to novices , 1993 .

[36]  Calvin Lin,et al.  Using cargo-bot to provide contextualized learning of recursion , 2013, ICER '13.

[37]  Colleen M. Lewis Exploring variation in students' correct traces of linear recursion , 2014, ICER '14.

[38]  Bruria Haberman How Learning Logic Programming Affects Recursion Comprehension , 2004, Comput. Sci. Educ..

[39]  Judith Segal Empirical studies of functional programming learners evaluating recursive functions , 1994 .

[40]  Gordon I. McCalla,et al.  Learning Recursion Through the Use of a Mental Model-Based Programming Environment , 1992, Intelligent Tutoring Systems.

[41]  Charles E. McDowell,et al.  Pair programming improves student retention, confidence, and program quality , 2006, CACM.

[42]  Judith Gal-Ezer,et al.  What (else) should CS educators know? , 1998, CACM.