Skip to content
GitHub Action edited this page Jun 19, 2023 · 3 revisions

Welcome to the refactor tutor wiki!

This wiki contains the design of a tutoring system designed to let novice programmers learn refactoring. Keuning et al. (2021) gives a description of the tutoring system:

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.

System Context

In the figure below, an overview of the external dependencies of the tutor has been given. As the tutor is completely self-contained and does not depend on third party Services there are no other Services visible.

There are three different users of the system:

  • Students: The main target audience of the refactor tutor is novice programmers. The main goal of the application is to let students practice with refactoring code.
  • Lecturers: Lecturers have an interest in the tutor as well, as it enables them to give their students specific personalized feedback without having to individually give every student feedback.
  • Researchers: Researchers have similar interests as lecturers, but have the added interest of using the system to advance research on automated feedback.

References

Keuning, H., Heeren, B., & Jeuring, J. (2021). A Tutoring System to Learn Code Refactoring. Proceedings of the 52nd ACM Technical Symposium on Computer Science Education, 562–568. https://doi.org/10.1145/3408877.3432526