Acknowledging Good Java Code with Code Perfumes
Philipp Straubinger, Florian Oberm\"uller, Gordon Fraser

TL;DR
This paper introduces 'code perfumes', a novel Java code analysis technique that recognizes good programming practices, helping learners and educators by providing positive feedback and correlating with better code quality and student performance.
Contribution
The paper presents a new approach called code perfumes for Java, which highlights correct practices and correlates with improved code quality and student grades.
Findings
Code perfumes are frequent in learners' code.
Programs with more code perfumes tend to have better functionality.
Students using more code perfumes achieve higher grades.
Abstract
Java remains one of the most popular programming languages in education. Although Java programming education is well supported by study materials, learners also need more immediate support on the problems they face in their own code. When this support cannot be offered by educators personally, learners can resort to automated program analysis tools such as linters, which provide feedback on potential bugs or code issues. This is constructive feedback, but it may nevertheless feel like criticism. This paper introduces code perfumes for Java, a simple program analysis technique similar to linting, but commending the correct application of good programming practices. We present a catalogue of 20 Java code perfumes related to common Java language constructs for beginner to immediate learners. Our evaluation shows that these code perfumes occur frequently in learners' code, and programs with…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsScientific Computing and Data Management · Model-Driven Software Engineering Techniques · Software System Performance and Reliability
