A Tutoring System to Learn Code Refactoring

Publication date

2021-03-03

Authors

Keuning, HiekeISNI 000000049290580X
Heeren, BastiaanISNI 0000000396075391
Jeuring, JohanISNI 0000000110063265

Editors

Advisors

Supervisors

Document Type

Part of book
Open Access logo

License

taverne

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.

Keywords

code quality, learning programming, refactoring, tutoring systems, Taverne, General Computer Science, Education

Citation

Keuning, H, Heeren, B & Jeuring, J 2021, A Tutoring System to Learn Code Refactoring. in SIGCSE '21: Proceedings of the 52nd ACM Technical Symposium on Computer Science Education. Association for Computing Machinery, pp. 562-568, 52nd ACM Technical Symposium on Computer Science Education, SIGCSE 2021, Virtual, Online, United States, 13/03/21. https://doi.org/10.1145/3408877.3432526, conference