Publication Type
Conference Proceeding Article
Version
publishedVersion
Publication Date
3-2024
Abstract
Programming problems can be solved in a multitude of functionally correct ways, but the quality of these solutions (e.g. readability, maintainability) can vary immensely. When code quality is poor, symptoms emerge in the form of 'code smells', which are specific negative characteristics (e.g. duplicate code) that can be resolved by applying refactoring patterns. Many undergraduate computing curricula train students on this software engineering practice, often doing so via exercises on unfamiliar instructor-provided code. Our observation, however, is that this makes it harder for novices to internalise refactoring as part of their own development practices. In this paper, we propose a new approach to teaching refactoring, in which students must first complete a programming exercise constrained to ensure they will produce a code smell. This simple intervention is based on the idea that learning refactoring is easier if students are familiar with the code (having built it), that it brings refactoring closer to their regular development practice, and that it presents a powerful opportunity to learn from a 'mistake'. We designed and conducted a study with 35 novice undergraduates in which they completed various refactoring exercises alternately taught using a traditional and our 'mistake-based' approach, finding that students were significantly more effective and confident at completing exercises using the latter.
Keywords
Refactoring, code smells, code quality, software maintenance, software engineering, mistake-based learning, undergraduate course
Discipline
Programming Languages and Compilers | Software Engineering
Research Areas
Software and Cyber-Physical Systems
Publication
SIGCSE 2024: Proceedings of the 55th ACM Technical Symposium on Computer Science Education, Portland, USA, March 20-23
Volume
1
First Page
1307
Last Page
1313
ISBN
9798400704239
Identifier
10.1145/3626252.3630856
Publisher
ACM
City or Country
New York
Citation
TAN, Ivan Wei Han and POSKITT, Christopher M..
Fixing your own smells: Adding a mistake-based familiarization step when teaching code refactoring. (2024). SIGCSE 2024: Proceedings of the 55th ACM Technical Symposium on Computer Science Education, Portland, USA, March 20-23. 1, 1307-1313.
Available at: https://ink.library.smu.edu.sg/sis_research/8669
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-No Derivative Works 4.0 International License.
Additional URL
https://doi.org/10.1145/3626252.3630856