A Tutoring System to Learn Code Refactoring

Hieke Keuning, Bastiaan Heeren, Johan Jeuring

Research output: Chapter in Book/Report/Conference proceedingConference contributionAcademicpeer-review

Abstract

In the last few decades, numerous tutoring systems and assessment tools have been developed to support students with learning programming, giving hints on correcting errors, showing which test cases do not succeed, and grading their overall solutions. The focus has been less on helping students write code with good style and quality. There are several professional tools that can help, but they are not targeted at novice programmers. This paper describes a tutoring system that lets students practice with improving small programs that are already functionally correct. The system is based on rules that are extracted from input by teachers collected in a preliminary study, a subset of rules taken from professional tools, and other literature. Rules define how a code construct can be rewritten into a better variant, without changing its functionality. Rules can be combined to form rewrite strategies, similar to refactorings offered by most IDEs. The student can ask for hints and feedback at each step. We describe the design of the system, show example sessions, and evaluate and discuss its contribution and limitations.

Original languageEnglish
Title of host publicationSIGCSE '21: Proceedings of the 52nd ACM Technical Symposium on Computer Science Education
PublisherAssociation for Computing Machinery
Pages562-568
Number of pages7
ISBN (Electronic)9781450380621
DOIs
Publication statusPublished - 3 Mar 2021
Event52nd ACM Technical Symposium on Computer Science Education, SIGCSE 2021 - Virtual, Online, United States
Duration: 13 Mar 202120 Mar 2021

Conference

Conference52nd ACM Technical Symposium on Computer Science Education, SIGCSE 2021
Country/TerritoryUnited States
CityVirtual, Online
Period13/03/2120/03/21

Bibliographical note

Funding Information:
This research is supported by the Dutch Research Council (NWO), grant number 023.005.063.

Publisher Copyright:
© 2021 ACM.

Funding

This research is supported by the Dutch Research Council (NWO), grant number 023.005.063.

Keywords

  • code quality
  • learning programming
  • refactoring
  • tutoring systems

Fingerprint

Dive into the research topics of 'A Tutoring System to Learn Code Refactoring'. Together they form a unique fingerprint.

Cite this