Academia.edu no longer supports Internet Explorer.
To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.
Computer Science Education
…
34 pages
1 file
Background and Context: Recursion in binary trees has proven to be a hard topic. There was not much research on enhancing student understanding of this topic. Objective: We present a tutorial to enhance learning through practice of recursive operations in binary trees, as it is typically taught post-CS2. Method: We identified the misconceptions students have in recursive operations on binary trees. We designed a code writing exam question to measure those misconceptions. We built a tutorial that trains students on avoiding those misconceptions through the use of a semantic code analyzer that detects misconceptions and provides appropriate feedback. Findings: Our results show an improvement in student performance when using the tutorial along with the practice exercises, and even more improvement when the same exercises are used with a semantic code analyzer. Implications: The best way to use our tutorial to enhance student performance on advanced recursion is to allow students solving the tutorial exercises with the the semantic feedback.
Computer Science Education, 2017
Recursion is both an important and a difficult topic for introductory Computer Science students. Students often develop misconceptions about the topic that need to be diagnosed and corrected. In this paper, we report on our initial attempts to develop a concept inventory that measures student misconceptions on basic recursion topics. We present a collection of misconceptions and difficulties encountered by students when learning introductory recursion as presented in a typical CS2 course. Based on this collection, a draft concept inventory in the form of a series of questions was developed and evaluated, with the question rubric tagged to the list of misconceptions and difficulties.
Traditionally, loops are a central topic in a CS1 course but recursion is viewed as an advanced topic that is either taught near the end of the course or not taught at all. Taking a cue from the function-oriented programming community, we argue that there are strong pedagogical reasons for teaching recursion before loops in a CS1 course, regardless of what programming paradigm is taught. In our approach, recursion is presented as an instance of the classic "divide, conquer, and glue" problem solving strategy. Iteration is then presented as a particular pattern of recursion. Finally, loop constructs are presented as concise idioms for iterative patterns. We describe our positive experience in adopting this approach in a CS1 course and highlight the aspects of the course that we think contribute to its success.
2005
Abstract The approach to teaching recursion in introductory programming courses has changed little during the transition from procedural to object-oriented languages. It is still common to present recursion late in the course and to focus on traditional, procedural examples such as calculating factorials or solving the Towers of Hanoi puzzle. In this paper, we propose that the shift to object-oriented programming techniques calls for a significant shift in our approach to teaching recursion.
Cybernetics and Information Technologies, 2016
In this article we have presented the results of an empirical study which was carried out on 130 students in Introduction to programming classes. Their initial preference, success rate, comprehension and subsequent preference were studied when dealing with programming tasks which could be solved using either iteration or recursion.
African Journal of Research in Mathematics, Science and Technology Education
Recursion is an important concept for any computer science student to master. Many first year students develop the viable copies mental model of recursion and can successfully trace the execution of a simple recursive function. This article discusses a study focused on determining whether the ability to successfully trace a recursive function means that the student understands recursion or whether they are simply "applying a formula". The research question investigated was thus "To what extent do students with viable trace mental models understand the flow of control of recursive algorithms?" The research followed a phenomenological approach. A group of first year students with viable mental models was identified by classifying the mental models in their answers to test questions. Fifteen of these students were interviewed. The interviews involved the students talking aloud while they tackled various tasks. Each student's understanding of the active flow, the limiting case and the passive flow was assessed. The results show that in most cases even these students have some difficulty with the active flow, are confused about the passive flow and have misconceptions about the limiting case. This implies that more careful thought needs to be given to the examples used in teaching recursion and how the concept is taught.
AIP Conference Proceedings, 2019
When students begin to learn how to program computers, the greatest difficulty does not consist in learning a programming language, even considering the various programming paradigms to which it may belong, but rather in the way of conceiving a solution algorithm for a given problem. In this paper methods for learning how to build better programs with iterative and recursive techniques are proposed. Instead of using the traditional and sequential method, following theoretical exposition and creation of algorithms, practical demonstration in a specific framework to write a program in a programming language, program execution and tests, a new approach is introduced where a set of tools, such as Python programming language, Runestone Interactive documents and Online Python tutor, is used to allow the production of enriched documents with text, images, videos, code implementation and execution windows, with the option of step by step running, showing the used data structures and their values evolution, all together in an-Interactive Electronic Document (IED). Students have the opportunity to learn and experience programming concepts in a single document, interactively, increasing learning achievement and level of satisfaction.
2020
Recursion is a difficult concept to teach, and novice programmers struggle Learning it. The reasons include unfamiliarity with activities associated with analyzing recursion, such as visualizing program execution and difficulty understanding its back flow of control. In this paper we discuss approaches to teaching recursion that includes conceptual and program visualization methods. We also describe the recursion module of our ChiQatTutor system which relies on ideas from both approaches. We designed several activities that allow students to work on recursive problems: answering questions, animations, code tracing, validation, and construction tasks. We conducted four evaluation experiments at two different institutions, with a total of 89 students taking introductory Computer Science courses. We hypothesized that ChiQat-Tutor can help novice Computer Science students learn recursion, develop accurate mental models of recursion, and serve as an effective visualization tool with whic...
2009
We present EleMental: The Recurrence, a novel game that provides computer science students the opportunity to write code and perform interactive visualizations to learn about recursion through depth-first search of a binary tree. We designed the game to facilitate maximum transfer of learning to writing real programs, while also providing for interactive visualizations. We conducted a study with computer science majors to measure the impact of the game on learning and on attitudes toward educational games. Our results demonstrate the enthusiasm students have for learning games and provide insight into how such games should be constructed.
warwick.ac.uk
In this study, I examine students' appreciation of the relationship between recursion and iteration, including how they perceive the intra-relationship of the components within those processes. My approach is to design a logo-based microworld, which acts as a window on the students' thinking. In this environment, the students model trees and fractal-shape objects. I use a design-based research methodology in order to gain insights into students' understanding and design issues of the software. These early results show that having a clear understanding of the relation between recursion and iteration and of the flow of control are important in understanding the recursion itself. In addition, functional abstraction is a key concept in dealing with recursion. In the light of these results, I am planning to open
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.
ACM SIGCSE Bulletin, 1999
ACM SIGCSE Bulletin, 2008
2014
Computers & Education, 2007
ACM SIGCSE Bulletin, 1996
Proceedings of the 7th Computer Science Education Research Conference on ZZZ - CSERC '18, 2018
2012 Fourth International Workshop on Empirical Software Engineering in Practice, 2012
ACM SIGCSE Bulletin, 1995
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education - SIGCSE '00, 2000
Journal on Educational …, 2004
Proceedings of the 50th ACM Technical Symposium on Computer Science Education, 2019
ACM Sigcse Bulletin, 2000
Proceedings of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science Education, 2018
2012 First International Workshop on Formal Methods in Software Engineering: Rigorous and Agile Approaches (FormSERA), 2012
Informatics in Education, 2021