A Tutoring System to Learn Code Refactoring
Publication date
2021-03-03
Editors
Advisors
Supervisors
Document Type
Part of book
Metadata
Show full item recordCollections
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