A Haskell Recursion Tutor

  • K (Kevin) Nicasi

Student thesis: Master's Thesis


Recursion is not an easy subject to learn. In this thesis the literature is examined on the common difficulties and misconceptions students encounter when trying to understand recursion in the functional paradigm, and on the available tools for teaching and visualizing recursion. It is found that experts possess the copies model as their mental model and that novices often hold misconceptions about the passive flow and have difficulties identifying a correct base case or recursive step. The examined intelligent tutoring systems and visualizations show a variety of different approaches to illustrate code execution: some use graphical representations while others are text-based. Research indicates that some of the tools encourage students to spend more time with the learning material which leads to greater learning gains.
A prototype tool is proposed that supports the learning of recursion in Haskell through the step-wise evaluation of recursive functions and the displaying of the subsequent function calls in function tables. The prototype is aimed at alleviating the identified difficulties and misconceptions. The copies model is illustrated through the use of function tables that display the different instantiations of the function in the table rows. The passive flow is shown through step-wise normalization of the rows in the tables. The prototype has a unique way of illustrating the copies model and displays the passive flow explicitly. In the future the prototype could be augmented with additional features such as the handling of input and feedback.
Date of Award2 Nov 2020
Original languageEnglish
SupervisorBastiaan Heeren (Examiner) & Johan Jeuring (Co-assessor)

Master's Degree

  • Master Software Engineering

Cite this