A Systematic Mapping Study of Code Quality in Education

Hieke Keuning, Johan Jeuring, and Bastiaan Heeren. 2023. In Proceedings of the 2023 Conference on Innovation and Technology in Computer Science Education (ITiCSE 2023), Turku, Finland. https://doi.org/10.1145/3587102.3588777. Version with complete bibliography .

Title Year Topic Method Language CS DP MT RD RF SA
"I know it when i see it" - Perceptions of code quality 2018PerceptionsDescrCorrgeneric rd
A card game for learning software-refactoring principles2019MaterialsSurveygeneric-OOcs rf
A case study of the analysis of novice student programs 1999ProgramQualityDescrCorrC++ mt sa
A case study of the static analysis of the quality of novice student programs 1999ProgramQualityDescrCorrC++ mt sa
A critic for LISP 1987SelfmadeToolToolLisp
A design quality learning unit in OO modeling bridging the engineer and the artist2011CurriculumNoneUncleargeneric-OO mt
A diagnosis system of programming styles using program patterns2000SelfmadeTool(Q)ExperimC rd
A framework for the assessment and training of software refactoring competences 2019CurriculumCaseStudygeneric rf
A Heuristic Tool for Measuring Software Quality Using Program Language Standards 2022SelfmadeToolToolJava
A Large-Scale Comparison of Python Code in Jupyter Notebooks and Scripts 2022ProgramQualityDescrCorrPython
A method for detecting bad smells and ITS application to software engineering education 2014SelfmadeToolToolJavacs rf
A pedagogical approach in interleaving software quality concerns at an artificial intelligence course 2022TeachingMethodNoneUnclearJava mt
A programming style taxonomy 1991AssignmentsOthergeneric
A Proposal of Coding Rule Learning Function in Java Programming Learning Assistant System 2016SelfmadeToolSurveyJava rd sa
A Resource to Support Novices Refactoring Conditional Statements 2022TeachingMethod(Q)ExperimCcs rd rf
A study of loop style and abstraction in pedagogic practice2011ProgramQualityQualitativemutiple
A study on the quality mindedness of students 2022PerceptionsSurveygeneric
A tool for diagnosing the quality of java program and a method for its effective utilization in education2010ExternalTool(Q)ExperimJava rd
A Tutoring System to Learn Code Refactoring 2021SelfmadeToolToolJava rf
Academic coding guideline model - OCG 2014AssignmentsDiscussionC rd
Amelioration of Teaching Strategies by Exploring Code Quality and Submission Behavior 2019BehaviourDescrCorrC++cs
An Agile classroom experience: Teaching TDD and refactoring 2008ProgProcessExperienceJava rf
An Applicability Study on Refactoring Principles in Reading-Based Programming Learning 2022Materials(Q)ExperimJavadp rf
An automated assessment system for analysis of coding convention violations in Java programming assignments 2018SelfmadeToolToolJava rd
An Automatic Grading System for a High School-level Computational Thinking Course 2022SelfmadeToolQuantOtherHaskell
An empirical study of COBOL programs via a style analyzer: The benefits of good programming style 1989BehaviourDescrCorrCobol mt
An empirical study of iterative improvement in programming assignments 2015BehaviourDescrCorrC++ mt
An empirical study on students' ability to comprehend design patterns 2008ConceptUnd(Q)Experimmutipledp mt
An Incremental Model for Developing Educational Critiquing Systems: Experiences with the Java Critiquer2008SelfmadeToolDescrCorrJava
An innovative approach to teaching refactoring2006ProgProcessNoneUncleargeneric-OO rf
An instructional aid for student programs 1980SelfmadeToolDescrCorrFortran
Analysis of Learning Behavior in an Automated Programming Assessment Environment: A Code Quality Perspective 2020BehaviourQuantOtherJava
Analyzing students' software redesign strategies 2016BehaviourQualitativeJavadp rf
Anomaly Detection for Early Warning in Object-oriented Programming Course 2021SelfmadeToolToolJava sa
Applying Code Quality Detection in Online Programming Judge 2020ExternalToolDescrCorrPython
Applying gamification to motivate students to write high-quality code in programming assignments 2019TeachingMethod(Q)ExperimC mt
Are Undergraduate Creative Coders Clean Coders? A Correlation Study 2022ProgramQualityDescrCorrJava
ASPA: A Static Analyser to Support Learning and Continuous Feedback on Programming Courses. An Empirical Validation 2022SelfmadeToolSurveyPython sa
Assessing software quality of agile student projects by data-mining software repositories 2019ProgramQualityDescrCorrunknown mt
Assessing the quality of programs: A topic for the CS2 course 1987ProgramQualityDiscussiongeneric
Assessing Understanding of Maintainability using Code Review 2021Assignments(Q)Experimgeneric
Automated critique of early programming antipatterns 2019SelfmadeToolToolJava sa
Automatic analysis of functional program style1996SelfmadeToolToolSML
Automatic assessment aids for Pascal programs 1982SelfmadeToolDescrCorrPascal
Automatic Assessment of the Design Quality of Student Python and Java Programs2022SelfmadeTool(Q)Experimmutiple rd
Automatic detection of bad programming habits in scratch 2014ProgramQualityDescrCorrScratch
Automatic grader for programming assignment using source code analyzer 2014SelfmadeToolDescrCorrmutiple
Automatic programming assessment 1993ProgramQualityDescrCorrPascal mt
AutoStyle: Toward coding style feedback at scale 2015SelfmadeToolToolmutiple
Bad Smells in Scratch Projects: A Preliminary Analysis2019ProgramQualityDescrCorrScratchcs
Beautiful JavaScript: How to guide students to create good and elegant code 2014ProgProcessNoneUnclearJavaScript rf
Beauty and the Beast: on the readability of object-oriented example programs2016MaterialsDescrCorrJava rd
But my program runs! Discourse rules for novice programmers 1986AssignmentsNoneUnclearPascal
Can students help themselves? An investigation of students' feedback on the quality of the source code 2019ProgramQualitySurveyPython
Carrot and Stick approaches revisited when managing Technical Debt in an educational context 2021TeachingMethod(Q)ExperimJava mt
Challenges of knowledge component modeling: A software engineering case study 2022MaterialsCaseStudygeneric rf
Clean Code - Delivering A Lightweight Course 2021TeachingMethodNoneUnclearJava
Clean Code and Design Educational Tool 2021SelfmadeToolToolC\#cs rd
Clean Code Tutoring: Makings of a Foundation 2022SelfmadeTool(Q)ExperimC\# rd rf
Cleangame: Gamifying the identification of code smells 2019SelfmadeTool(Q)ExperimJavacs rf
Code Comprehension Activities in Undergraduate Software Engineering Course - A Case Study 2015BehaviourDescrCorrmutiple rf
Code Perfumes: Reporting Good Code to Encourage Learners 2021ProgramQualityDescrCorrScratchcs
Code Quality Defects Across Introductory Programming Topics 2022ProgramQualityDescrCorrPython
Code Quality Improvement for All: Automated Refactoring for Scratch 2019SelfmadeTool(Q)ExperimScratchcs mt rf
Code quality issues in student programs 2017ProgramQualityDescrCorrJava
Code quality: Examining the efficacy of automated tools2017ExternalToolDescrCorrPython mt
CompareCFG: Providing Visual Feedback on Code Quality Using Control Flow Graphs 2020SelfmadeToolToolJava
Comparison of software quality in the work of children and professional developers based on their classroom exercises 2015ProgramQualityDescrCorrJava
Comprehension and application of design patterns by novice software engineers 2018ConceptUnd(Q)ExperimJavadp
Dependency Analysis for Learning Class Structure for Novice Java Programmer 2011TeachingMethodCaseStudyJava rd rf
Design of e-activities for the learning of code refactoring tasks 2014TeachingMethodExperiencegeneric rf
Design patterns in scientific software 2004TeachingMethodNoneUnclearJavadp rf
Designing a Programming Game to Improve Children's Procedural Abstraction Skills in Scratch 2020SelfmadeTool(Q)ExperimScratchcs
Designing a rubric for feedback on code quality in programming courses 2016AssignmentsOthergeneric
Detecting and Addressing Design Smells in Novice Processing Programs 2019ProgramQualityDescrCorrProcessingcs rf sa
Development of a refactoring learning environment2011SelfmadeToolToolJava rf
Do code smells hamper novice programming? A controlled experiment on Scratch programs 2016ConceptUnd(Q)ExperimScratchcs
Documentation Standards for Beginning Students 1976AssignmentsNoneUnclearmutiple rd
Does Static Analysis Help Software Engineering Students? 2020ExternalToolDescrCorrJava sa
Dr. Scratch: Automatic analysis of scratch projects to assess and foster computational thinking2015SelfmadeTool(Q)ExperimScratch
DrPython-WEB: A Tool to Help Teaching Well-Written Python Programs 2022SelfmadeToolToolPython
Earthworm - Automated decomposition suggestions 2018SelfmadeToolToolPython rf sa
Effectively teaching coding standards in programming 2005PerceptionsSurveygeneric
Effects of technical debt awareness: A classroom study 2017TeachingMethodQualitativegeneric
Encapsulation and Reuse as Viewed by Java Students 2001PerceptionsQualitativeJava
Enhancing Abstraction in App Inventor with Generic Event Handlers 2019SelfmadeToolToolAPPInventorcs rf
Enhancing block-based programming pedagogy to promote the culture of quality from the ground up - a position paper 2017CurriculumDiscussiongeneric-block
Evaluating Code Improvements in Software Quality Course Projects 2022TeachingMethod(Q)ExperimJava sa
Evolving an integrated curriculum for object-oriented analysis and design 2008CurriculumExperiencegeneric-OOdp rf
Exploration of Experimental Teaching Reforms on C Programming Design Course 2021TeachingMethodDescrCorrC
Exploring Metrics for the Analysis of Code Submissions in an Introductory Data Science Course 2021ProgramQualityDescrCorrPython mt
Five reasons for including technical debt in the software engineering curriculum 2015CurriculumNoneUncleargeneric
Foobaz: Variable name feedback for student code at scale 2015SelfmadeToolSurveyPython
Forming groups for collaborative learning in introductory computer programming courses based on students' programming styles: An empirical study 2006ProgProcess(Q)ExperimC mt
Fostering the comprehension of the object-oriented programming paradigm by a virtual lab exercise 2019TeachingMethodExperienceJava
FrenchPress gives students automated feedback on Java program flaws 2015SelfmadeToolSurveyJava
Function Names: Quantifying the Relationship Between Identifiers and Their Functionality to Improve Them 2022SelfmadeToolToolJava rd
Gamification based learning environment for computer science students 2020SelfmadeToolToolmutiple sa
Helping Student Programmers Through Industrial-Strength Static Analysis: A Replication Study 2022BehaviourDescrCorrJava sa
High School Teachers' Understanding of Code Style 2020PerceptionsQualitativegeneric
How junior developers deal with their technical debt? 2020BehaviourMixedmutiple sa
How kids code and how we know: An exploratory study on the scratch repository 2016ProgramQualityDescrCorrScratchcs
How teachers would help students to improve their code 2019ProgramQualitySurveygeneric
How to improve code quality by measurement and refactoring 2016ProgProcessDescrCorrJava mt rf sa
Human vs. Automated coding style grading in computing education2019ProgramQualityDescrCorrC++ sa
Hyperstyle: A Tool for Assessing the Code Quality of Solutions to Programming Assignments 2022SelfmadeToolToolmutiple rd rf
Impact of aspect-oriented programming on the quality of novices' programs: A comparative study2013ProgramQuality(Q)ExperimC\# mt rd
Implementing a set of guidelines for CS majors in the production of program code 1996AssignmentsSurveyModula2
Improving Feedback on GitHub Pull Requests: A Bots Approach 2019SelfmadeToolMixedgeneric-OOcs sa
Improving Readability of Scratch Programs with Search-based Refactoring 2021SelfmadeToolToolScratch rd rf
Improving students programming quality with the continuous inspection process: a social coding perspective 2019ProgProcess(Q)ExperimJava
Improving the software quality - An educational approach 2017SelfmadeToolToolC\#dp rf
Integrating Antipatterns into the Computer Science Curriculum2009CurriculumNoneUncleargeneric-OOdp rf
Investigating code quality tools in the context of software engineering education 2017ExternalToolDescrCorrJava mt rf
Investigating static analysis errors in student Java programs 2017ProgramQualityDescrCorrJava sa
Investigation of the relationship between program correctness and programming style 1999ProgramQualityDescrCorrmutiple mt rd
Japroch: A tool for checking programming style2004SelfmadeToolToolJava
JMetricGrader: A software for evaluating student projects using design object-oriented metrics and neural networks 2022ProgramQualityQuantOtherJava mt
Learning appreciation for design patterns by doing it the hard way first 2003TeachingMethodExperienceJavadp rf
Learning software engineering principles using open source software 2008AssignmentsNoneUnclearJava mt rd rf
Learning to listen for design 2019ProgProcessDiscussiongenericcsdp rf
Linking code readability, structure, and comprehension among novices: It's complicated 2019PerceptionsSurveymutiple rd
Litterbox: A linter for scratch programs 2021SelfmadeToolToolScratchcs
Measuring static quality of student code 2011ProgramQualityDescrCorrJava mt
Measuring students' source code quality in software development projects through commit-impact analysis 2021BehaviourDescrCorrmutiple mt
Mind the Gap: Searching for Clarity in NCEA 2021MaterialsMixedgeneric
Mining student CVS repositories for performance indicators 2005BehaviourDescrCorrmutiple
Modeling Learners Programming Skills and Question Levels Through Machine Learning 2020ProgramQualityQuantOthermutiple rd
Novice Programmers and Software Quality: Trends and Implications 2017ProgramQualityDescrCorrScratchcs
On assuring learning about code quality 2020CurriculumCaseStudygeneric
On the Use of FCA Models in Static Analysis Tools to Detect Common Errors in Programming 2021ProgramQualityDescrCorrPython sa
Pirate plunder: Game-based computational thinking using scratch blocks2018SelfmadeToolToolScratchcs
Program decomposition and complexity in CS1 2015TeachingMethod(Q)ExperimC mt
Programming style in introductory programming courses2015CurriculumNoneUncleargeneric
Promoting Code Quality via Automated Feedback on Student Submissions 2021SelfmadeToolToolmutiple
Qualitative aspects of students' programs: Can we make them measurable? 2016SelfmadeTool(Q)ExperimPython
Quality Assessment of Learners' Programs by Grouping Source Code Metrics 2021ProgramQualityQuantOtherLua mt
Readable vs. Writable Code: A Survey of Intermediate Students' Structure Choices 2022PerceptionsSurveyJava rd
RefacTutor: An Interactive Tutoring System for Software Refactoring 2020SelfmadeToolToolJava rf
Reflections on teaching refactoring: A tale of two projects 2015ProgProcess(Q)ExperimJava
ReLE - a refactoring supporting tool2011SelfmadeToolToolJava rf
Replicating novices' struggles with coding style 2019PerceptionsSurveymutiple rd
Research and practice on education of SQA at source code level2011TeachingMethodCaseStudygeneric
Salient elements in novice solutions to code writing problems2011ProgramQualityQualitativemutiple
Scale-driven automatic hint generation for coding style 2016SelfmadeTool(Q)Experimmutiple
Serious refactoring games 2019MaterialsNoneUncleargeneric-OOcs rf
Smells in block-based programming languages 2016ProgramQualityDescrCorrgeneric-blockcs
Software analytics to support students in object-oriented programming tasks: an empirical study 2020ProgramQuality(Q)ExperimJava
Software clones in scratch projects: On the presence of copy-and-paste in computational thinking learning 2017ProgramQualityDescrCorrScratch
Software engineer education support system ALECSS utilizing devOps tools 2016SelfmadeToolDescrCorrJava sa
Software metrics as a programming training tool 1990Assignments(Q)ExperimCobol mt
Software Quality as a Subsidy for Teaching Programming 2021TeachingMethodDescrCorrJava
Software Quality Metrics Calculations for Java Programming Learning Assistant System 2020SelfmadeToolDescrCorrJava mt
Software readability practices and the importance of their teaching 2016AssignmentsSurveygeneric-OOcs rd
Sprinter: A Didactic Linter for Structured Programming2022SelfmadeToolToolJava
Static analyses in python programming courses 2019SelfmadeTool(Q)ExperimPython sa
Static analysis of programming exercises: Fairness, usefulness and a method for application 2016ExternalToolDescrCorrJava sa
Static analysis of source code written by novice programmers 2017ExternalToolDescrCorrC sa
Static Analysis of Students' Java Programs2004SelfmadeToolToolJava mt sa
Structural analysis of source code collected from programming contests 2014ProgramQualityQuantOtherC++
Student Refactoring Behaviour in a Programming Tutor 2020BehaviourDescrCorrJava rf
Students Projects' Source Code Changes Impact on Software Quality Through Static Analysis 2021BehaviourDescrCorrmutiple sa
Studying Software Metrics Based on Real-World Software Systems2007AssignmentsNoneUncleargeneric mt
Supporting Students in C++ Programming Courses with Automatic Program Style Assessment 2004SelfmadeToolQualitativeC++
Teacher Mate: A Support Tool for Teaching Code Quality 2020SelfmadeToolDescrCorrJava
Teaching code quality in high school programming courses - Understanding teachers' needs 2022PerceptionsQualitativegeneric
Teaching Defensive Programming in Java2004AssignmentsSurveyJava
Teaching design patterns using a family of games 2009AssignmentsExperienceJavadp rf
Teaching programming style with ugly code2013SelfmadeToolToolJava rd
Teaching software quality via source code inspection tool 2017SelfmadeTool(Q)Experimmutiple
Teaching students to build well formed object-oriented methods through refactoring 2007ProgProcessNoneUncleargeneric-OO rf
Teaching students to recognize and implement good coding style 2017ProgramQuality(Q)ExperimPython
Teaching the culture of quality from the ground up: Novice-tailored quality improvement for scratch programmers2020SelfmadeToolMixedScratch rf
The effect of reporting Known issues on students' work 2018Perceptions(Q)ExperimC++
The Five Million Piece Puzzle: Finding Answers in 500,000 Snap-Projects 2019ProgramQualityDescrCorrSnap!cs
The impact of automated code quality feedback in programming education2017ExternalTool(Q)Experimmutiple
The LAN-simulation: A refactoring teaching example 2005AssignmentsExperienceJava rf
The Role of Source Code Vocabulary in Programming Teaching and Learning 2020SelfmadeTool(Q)ExperimPython rd
The teaching of documentation and good programming style in a liberal arts computer science program 1980TeachingMethodNoneUnclearBasic
Tool assisted identifier naming for improved software readability: An empirical study2005SelfmadeTool(Q)ExperimJava rd
Towards an empirically validated model for assessment of code quality 2014AssignmentsQualitativegeneric
Towards generalizing expert programmers' suggestions for novice programmers 2013ProgramQualitySurveyAlice-LG sa
Understanding recurring quality problems and their impact on code sharing in block-based software 2017ProgramQualityDescrCorrScratchcs
Understanding Refactoring Tasks over Time: A Study Using Refactoring Graphs 2022Behaviour(Q)ExperimJava rf
Understanding Semantic Style by Analysing Student Code 2018ProgramQualityDescrCorrJava
Unencapsulated collection - A teachable design smell 2018ProgramQualityCaseStudygeneric-OOcs rf
Unreadable code in novice developers 2021PerceptionsSurveygeneric rd
Using examples as guideposts for programming exercises: Providing support while preserving the challenge 2021AssignmentsCaseStudyC++ rf
Using pirate plunder to develop children's abstraction skills in scratch 2019SelfmadeTool(Q)ExperimScratchcs
Using project-based approach to teach design patterns: An Experience Report 2021TeachingMethod(Q)ExperimJavacsdp rf
Using software metrics tools for maintenance decisions: a classroom exercise1996ExternalToolCaseStudyunknown mt
Using static analysis tools to assist student project evaluation 2020ExternalToolDescrCorrPython sa
Using Verilog LOGISCOPE to analyze student programs1998ExternalToolDescrCorrC++ sa
Utilizing software engineering education support system ALECSS at an actual software development experiment: A case study 2019SelfmadeToolDescrCorrJava
You have said too much : Java-like verbosity anti-patterns in python codebases 2021ProgramQualityDescrCorrPython