AbstractIn the coursework of universities, the focus is put on getting a program functionally working, rather than writing high-quality code. As a result, graduates often lack the programming skills that businesses desire. This problem is hard to solve, as providing personalized feedback on the students’ program code does not fit within the time constraints of teachers. Intelligent Tutoring Systems (ITS) are introduced to lessen the workload of teachers by providing the students automated feedback.
The Refactor Tutor is an ITS that solely focuses on improving code quality by providing ‘imperative’ automated layered feedback. The automated layered feedback is represented to the students as hints. The hints are provided in a tree structure, with lower-level hints showing more details. The Refactor Tutor does not provide feedback on refactoring imperative code to functional. However, this is very beneficial, since this improves the code quality and students get familiar with a functional style.
The goal of our research is to extend the Refactor Tutor to also provide this type of feedback of refactoring imperative code to functional. Our scientific contribution is to research whether an ITS can be used to teach a functional style by refactoring imperative code. Our first step towards this type of tutor is to support refactoring imperative loops to the higherorder functions map and filter as most multiparadigm programming languages support these functions.
We extended the Refactor Tutor to support lambda expressions and the higher-order functions map and filter. We then set up two exercises and the step-by-step hints to refactor to the higher-order functions. Finally, two teachers were interviewed to compare their feedback with the step-by-step hints.
Both teachers questioned whether students would understand the feedback as it requires a different thinking mindset. However, the teachers could see the benefits from this approach and would adapt the system into their courses. Given that this is a novel approach, more research is needed to understand the effect of such refactorings on students.
|Date of Award||15 Oct 2021|
|Supervisor||Sylvia Stuurman (Examiner) & Bastiaan Heeren (Co-assessor)|
- Higher-order functions
- Code quality
- Master Software Engineering