A Systematic Mapping Study of Code Quality in Education

While functionality and correctness of code has traditionally been the main focus of computing educators, quality aspects of code are getting increasingly more attention. High-quality code contributes to the maintainability of software systems, and should therefore be a central aspect of computing education. We have conducted a systematic mapping study to give a broad overview of the research conducted in the field of code quality in an educational context. The study investigates paper characteristics, topics, research methods, and the targeted programming languages. We found 195 publications (1976-2022) on the topic in multiple databases, which we systematically coded to answer the research questions. This paper reports on the results and identifies developments, trends, and new opportunities for research in the field of code quality in computing education.

[1]  J. Jeuring,et al.  A Systematic Mapping Study of Code Quality in Education , 2023, ITiCSE.

[2]  C. Izu,et al.  A Resource to Support Novices Refactoring Conditional Statements , 2022, ITiCSE.

[3]  C. Piech,et al.  Function Names: Quantifying the Relationship Between Identifiers and Their Functionality to Improve Them , 2022, L@S.

[4]  T. Bryksin,et al.  A Large-Scale Comparison of Python Code in Jupyter Notebooks and Scripts , 2022, 2022 IEEE/ACM 19th International Conference on Mining Software Repositories (MSR).

[5]  José Paulo Leal,et al.  Automated Assessment in Computer Science Education: A State-of-the-Art Review , 2022, ACM Trans. Comput. Educ..

[6]  Kris Aerts,et al.  Are Undergraduate Creative Coders Clean Coders?: A Correlation Study , 2022, SIGCSE.

[7]  S. Edwards,et al.  Helping Student Programmers Through Industrial-Strength Static Analysis: A Replication Study , 2022, SIGCSE.

[8]  E. Tempero,et al.  Teaching Code Quality in High School Programming Courses - Understanding Teachers’ Needs , 2022, ACE.

[9]  Timofey Bryksin,et al.  Hyperstyle: A Tool for Assessing the Code Quality of Solutions to Programming Assignments , 2021, SIGCSE.

[10]  E. Tilevich,et al.  “You have said too much”: Java-like verbosity anti-patterns in Python codebases , 2021, SPLASH-E.

[11]  Mario Piattini,et al.  Carrot and Stick approaches revisited when managing Technical Debt in an educational context , 2021, 2021 IEEE/ACM International Conference on Technical Debt (TechDebt).

[12]  Johan Jeuring,et al.  A Tutoring System to Learn Code Refactoring , 2021, SIGCSE.

[13]  Ewan D. Tempero,et al.  Assessing Understanding of Maintainability using Code Review , 2021, ACE.

[14]  Andrew Luxton-Reilly,et al.  A Review of Peer Code Review in Higher Education , 2020, ACM Trans. Comput. Educ..

[15]  Ewan Tempero,et al.  CompareCFG: Providing Visual Feedback on Code Quality Using Control Flow Graphs , 2020, ITiCSE.

[16]  Moffat Mathews,et al.  How Junior Developers Deal with Their Technical Debt? , 2020, 2020 IEEE/ACM International Conference on Technical Debt (TechDebt).

[17]  Yann-Gaël Guéhéneuc,et al.  Code Smells and Refactoring: A Tertiary Systematic Review of Challenges and Observations , 2020, J. Syst. Softw..

[18]  Ewan D. Tempero,et al.  On Assuring Learning About Code Quality , 2020, ACE.

[19]  Gang Yin,et al.  Improving students’ programming quality with the continuous inspection process: a social coding perspective , 2020, Frontiers of Computer Science.

[20]  Ralf Romeike,et al.  The Five Million Piece Puzzle: Finding Answers in 500,000 Snap!-Projects , 2019, 2019 IEEE Blocks and Beyond Workshop (B&B).

[21]  Gustaf Neumann,et al.  A Framework for the Assessment and Training of Software Refactoring Competences , 2019, KMIS.

[22]  Anna N. Rafferty,et al.  Replicating Novices' Struggles with Coding Style , 2019, 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC).

[23]  Mike Joy,et al.  Source-code Similarity Detection and Detection Tools Used in Academia , 2019, ACM Trans. Comput. Educ..

[24]  M. P. Jacob Habgood,et al.  Using Pirate Plunder to Develop Children's Abstraction Skills in Scratch , 2019, CHI Extended Abstracts.

[25]  Armando Fox,et al.  Linking Code Readability, Structure, and Comprehension Among Novices: It's Complicated , 2019, 2019 IEEE/ACM 41st International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET).

[26]  Leo C. Ureel,et al.  Automated Critique of Early Programming Antipatterns , 2019, SIGCSE.

[27]  David Liu,et al.  Static Analyses in Python Programming Courses , 2019, SIGCSE.

[28]  Jeffrey C. Carver,et al.  Software Testing in Introductory Programming Courses: A Systematic Mapping Study , 2019, SIGCSE.

[29]  Ting-Chia Hsu,et al.  How to learn and how to teach computational thinking: Suggestions based on a review of the literature , 2018, Comput. Educ..

[30]  João Brunet,et al.  Can students help themselves? An investigation of students’ feedback on the quality of the source code , 2018, 2018 IEEE Frontiers in Education Conference (FIE).

[31]  Ewan D. Tempero,et al.  Unencapsulated Collection: A Teachable Design Smell , 2018, SIGCSE.

[32]  Ewan D. Tempero,et al.  Understanding semantic style by analysing student code , 2018, ACE.

[33]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[34]  Eli Tilevich,et al.  Enhancing block-based programming pedagogy to promote the culture of quality from the ground up a position paper , 2017, 2017 IEEE Blocks and Beyond Workshop (B&B).

[35]  Johan Jeuring,et al.  "I know it when I see it": Perceptions of Code Quality , 2017, ITiCSE.

[36]  Johan Jeuring,et al.  Code Quality Issues in Student Programs , 2017, ITiCSE.

[37]  Carlos Soubervielle-Montalvo,et al.  Source code metrics: A systematic mapping study , 2017, J. Syst. Softw..

[38]  Dejan Gjorgjevikj,et al.  Static analysis of source code written by novice programmers , 2017, 2017 IEEE Global Engineering Education Conference (EDUCON).

[39]  Erik Barendsen,et al.  Designing a rubric for feedback on code quality in programming courses , 2016, Koli Calling.

[40]  Felienne Hermans,et al.  How Kids Code and How We Know: An Exploratory Study on the Scratch Repository , 2016, ICER.

[41]  Armando Fox,et al.  Scale-Driven Automatic Hint Generation for Coding Style , 2016, ITS.

[42]  Marie Nordström,et al.  Beauty and the Beast: on the readability of object-oriented example programs , 2015, Software Quality Journal.

[43]  Felienne Hermans,et al.  Do code smells hamper novice programming? A controlled experiment on Scratch programs , 2016, 2016 IEEE 24th International Conference on Program Comprehension (ICPC).

[44]  Stephen Nutbrown,et al.  Static analysis of programming exercises: Fairness, usefulness and a method for application , 2016, Comput. Sci. Educ..

[45]  Isabel Braga Sampaio,et al.  Software readability practices and the importance of their teaching , 2016, 2016 7th International Conference on Information and Communication Systems (ICICS).

[46]  Elena L. Glassman,et al.  Foobaz: Variable Name Feedback for Student Code at Scale , 2015, UIST.

[47]  Y. Raghu Reddy,et al.  Code Comprehension Activities in Undergraduate Software Engineering Course - A Case Study , 2015, 2015 24th Australasian Software Engineering Conference.

[48]  Naveed Arshad,et al.  Reflections on Teaching Refactoring: A Tale of Two Projects , 2015, ITiCSE.

[49]  Sylvia Stuurman,et al.  Beautiful JavaScript: how to guide students to create good and elegant code , 2014, CSERC.

[50]  Claes Wohlin,et al.  Guidelines for snowballing in systematic literature studies and a replication in software engineering , 2014, EASE '14.

[51]  Caitlin Kelleher,et al.  Towards generalizing expert programmers' suggestions for novice programmers , 2013, 2013 IEEE Symposium on Visual Languages and Human Centric Computing.

[52]  Tony Clear,et al.  An introduction to program comprehension for computer science educators , 2010, ITiCSE-WGR '10.

[53]  V.N. Gudivada,et al.  Learning software engineering principles using open source software , 2008, 2008 38th Annual Frontiers in Education Conference.

[54]  Kai Petersen,et al.  Systematic Mapping Studies in Software Engineering , 2008, EASE.

[55]  Suzanne Smith,et al.  Teaching students to build well formed object-oriented methods through refactoring , 2007, SIGCSE.

[56]  Ann E. Fleury Encapsualtion and reuse as viewed by java students , 2001, SIGCSE '01.

[57]  R. Waldo Roth,et al.  The teaching of documentation and good programming style in a liberal arts computer science program , 1980, SIGCSE '80.

[58]  Diana Sotropa,et al.  On the Use of FCA Models in Static Analysis Tools to Detect Common Errors in Programming , 2021, ICCS.

[59]  So Young Rhim,et al.  Modeling Learners' Programming Skills and Question Levels Through Machine Learning , 2020, HCI.

[60]  Maria-Iuliana Bocicor,et al.  Gamification based Learning Environment for Computer Science Students , 2020, ENASE.

[61]  Gustaf Neumann,et al.  RefacTutor: An Interactive Tutoring System for Software Refactoring , 2019, CSEDU.

[62]  Thorsten Haendler,et al.  A Card Game for Learning Software-Refactoring Principles , 2019, GamiLearn.

[63]  Danilo Medeiros Eler,et al.  Teaching software quality via source code inspection tool , 2017, 2017 IEEE Frontiers in Education Conference (FIE).

[64]  Marsha Zaidman,et al.  Teaching defensive programming in Java , 2004 .

[65]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .