{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,2,14]],"date-time":"2026-02-14T05:08:02Z","timestamp":1771045682303,"version":"3.50.1"},"reference-count":69,"publisher":"Association for Computing Machinery (ACM)","issue":"4","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Comput. Educ."],"published-print":{"date-parts":[[2025,12,31]]},"abstract":"<jats:p>Code quality is a critical aspect of programming, as high-quality code is easier to maintain, and code maintenance constitutes the majority of software costs. Consequently, code quality should be emphasized in programming education. While previous research has identified numerous code quality defects commonly made by students, the current state lacks a clear organization and prioritization of these defects. In this work, we systematically address code quality defects in introductory programming from multiple perspectives. We present a comprehensive catalog of over 100 specific defects, organized through a structured classification of defect types and their associated programming constructs, along with an importance ranking. We conducted a survey among computer science educators regarding the severity of various defects. Our findings indicate that while individual opinions vary, there is general consensus on many code quality issues. We also review automated methods for detecting code quality defects and introduce a novel tool with extensive defect coverage. Finally, we analyze the prevalence of these defects using multiple datasets and prevalence metrics, demonstrating the importance of contextual interpretation when evaluating defect prevalence.<\/jats:p>","DOI":"10.1145\/3749996","type":"journal-article","created":{"date-parts":[[2025,7,22]],"date-time":"2025-07-22T22:40:08Z","timestamp":1753224008000},"page":"1-32","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Code Quality Defects in Introductory Programming"],"prefix":"10.1145","volume":"25","author":[{"ORCID":"https:\/\/orcid.org\/0009-0006-9449-4524","authenticated-orcid":false,"given":"Anna","family":"\u0158echt\u00e1\u010dkov\u00e1","sequence":"first","affiliation":[{"name":"Masaryk University, Brno, Czech Republic"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8877-4729","authenticated-orcid":false,"given":"Radek","family":"Pel\u00e1nek","sequence":"additional","affiliation":[{"name":"Masaryk University, Brno, Czech Republic"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5601-926X","authenticated-orcid":false,"given":"Tom\u00e1\u0161","family":"Effenberger","sequence":"additional","affiliation":[{"name":"Um\u00edme to, Brno, Czech Republic"}]}],"member":"320","published-online":{"date-parts":[[2025,10,22]]},"reference":[{"key":"e_1_3_2_2_2","unstructured":"SIGCSE. 2024. SIGCSE Membership. SIGCSE. Retrieved from https:\/\/sigcse.org\/membership\/index.html"},{"key":"e_1_3_2_3_2","doi-asserted-by":"publisher","DOI":"10.1145\/2960310.2960325"},{"key":"e_1_3_2_4_2","doi-asserted-by":"publisher","DOI":"10.5455\/jjcit.71-1584234700"},{"key":"e_1_3_2_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/3236777"},{"key":"e_1_3_2_6_2","doi-asserted-by":"publisher","DOI":"10.1145\/2676723.2677258"},{"key":"e_1_3_2_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/3649217.3653594"},{"key":"e_1_3_2_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/3587102.3588852"},{"key":"e_1_3_2_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/3545945.3569759"},{"key":"e_1_3_2_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/3699538.3699556"},{"key":"e_1_3_2_11_2","doi-asserted-by":"publisher","DOI":"10.5281\/zenodo.5749825"},{"key":"e_1_3_2_12_2","doi-asserted-by":"publisher","DOI":"10.1145\/3478431.3499294"},{"key":"e_1_3_2_13_2","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2023.3298729"},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.5555\/800253.807736"},{"key":"e_1_3_2_15_2","doi-asserted-by":"publisher","DOI":"10.1145\/3174781.3174785"},{"key":"e_1_3_2_16_2","doi-asserted-by":"publisher","DOI":"10.1145\/2538862.2538924"},{"key":"e_1_3_2_17_2","unstructured":"CheckStyle contributors. 2024. CheckStyle. Retrieved from https:\/\/checkstyle.org\/"},{"key":"e_1_3_2_18_2","doi-asserted-by":"publisher","DOI":"10.6688\/JISE.201809_34(5).0006"},{"key":"e_1_3_2_19_2","doi-asserted-by":"publisher","DOI":"10.1145\/3408877.3432417"},{"key":"e_1_3_2_20_2","doi-asserted-by":"publisher","DOI":"10.5753\/rbie.2023.3552"},{"key":"e_1_3_2_21_2","doi-asserted-by":"publisher","DOI":"10.1145\/3160489.3160500"},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/3105726.3106182"},{"key":"e_1_3_2_23_2","doi-asserted-by":"publisher","DOI":"10.1145\/3478431.3499415"},{"key":"e_1_3_2_24_2","unstructured":"Flake8 contributors. 2023. Flake8. Retrieved from https:\/\/github.com\/PyCQA\/flake8"},{"key":"e_1_3_2_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/3657604.3662040"},{"key":"e_1_3_2_26_2","doi-asserted-by":"publisher","DOI":"10.1145\/3159450.3159456"},{"key":"e_1_3_2_27_2","doi-asserted-by":"publisher","DOI":"10.1145\/3279720.3279736"},{"key":"e_1_3_2_28_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-58459-7_12"},{"key":"e_1_3_2_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/3341719"},{"key":"e_1_3_2_30_2","doi-asserted-by":"publisher","DOI":"10.1145\/611892.611956"},{"key":"e_1_3_2_31_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE-SEET58685.2023.00024"},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1145\/3502718.3524810"},{"key":"e_1_3_2_33_2","doi-asserted-by":"publisher","DOI":"10.1145\/3689187.3709615"},{"key":"e_1_3_2_34_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-031-25695-0_24"},{"key":"e_1_3_2_35_2","doi-asserted-by":"publisher","DOI":"10.2190\/6E5W-AR7C-NX76-HUT2"},{"key":"e_1_3_2_36_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-031-43393-1_47"},{"key":"e_1_3_2_37_2","doi-asserted-by":"publisher","DOI":"10.1145\/3059009.3059061"},{"key":"e_1_3_2_38_2","doi-asserted-by":"publisher","DOI":"10.1145\/3304221.3319780"},{"key":"e_1_3_2_39_2","doi-asserted-by":"publisher","DOI":"10.1145\/3408877.3432526"},{"key":"e_1_3_2_40_2","doi-asserted-by":"publisher","DOI":"10.1145\/3231711"},{"key":"e_1_3_2_41_2","doi-asserted-by":"publisher","DOI":"10.1145\/3587102.3588777"},{"key":"e_1_3_2_42_2","doi-asserted-by":"crossref","unstructured":"Natalie Kiesler Dominic Lohr and Hieke Keuning. 2023. Exploring the potential of large language models to generate formative programming feedback. arXiv:2309.00029. Retrieved from https:\/\/arxiv.org\/abs\/2309.00029","DOI":"10.1109\/FIE58773.2023.10343457"},{"key":"e_1_3_2_43_2","doi-asserted-by":"publisher","DOI":"10.1145\/3507923.3507930"},{"key":"e_1_3_2_44_2","volume-title":"A Data Repository for the EDM Community: The PSLC DataShop","author":"Koedinger Kenneth","year":"2010","unstructured":"Kenneth Koedinger, Ryan Baker, Kyle Cunningham, Alida Skogsholm, Brett Leber, and John Stamper. 2010. A Data Repository for the EDM Community: The PSLC DataShop. CRC Press."},{"key":"e_1_3_2_45_2","unstructured":"Charles Koutcheme Nicola Dainese Arto Hellas Sami Sarsa Juho Leinonen Syed Ashraf and Paul Denny. 2024. Evaluating language models for generating and judging programming feedback. arXiv:2407.04873. Retrieved from https:\/\/arxiv.org\/abs\/2407.04873"},{"key":"e_1_3_2_46_2","doi-asserted-by":"publisher","DOI":"10.1145\/3631802.3631830"},{"key":"e_1_3_2_47_2","doi-asserted-by":"publisher","DOI":"10.1145\/3649217.3653545"},{"key":"e_1_3_2_48_2","doi-asserted-by":"publisher","DOI":"10.1145\/3287324.3287503"},{"key":"e_1_3_2_49_2","doi-asserted-by":"publisher","DOI":"10.1145\/3385209.3385226"},{"key":"e_1_3_2_50_2","doi-asserted-by":"publisher","DOI":"10.1145\/3510456.3514149"},{"key":"e_1_3_2_51_2","doi-asserted-by":"publisher","DOI":"10.1145\/3636515"},{"key":"e_1_3_2_52_2","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2009.50"},{"key":"e_1_3_2_53_2","doi-asserted-by":"publisher","DOI":"10.1145\/3412453.3423195"},{"key":"e_1_3_2_54_2","doi-asserted-by":"publisher","DOI":"10.1109\/MIUCC52538.2021.9447629"},{"key":"e_1_3_2_55_2","unstructured":"PMD contributors. 2023. PMD - Source Code Analyzer. Retrieved from https:\/\/github.com\/pmd\/pmd"},{"key":"e_1_3_2_56_2","unstructured":"Pylint contributors. 2023. Pylint. Retrieved from https:\/\/github.com\/pylint-dev\/pylint"},{"key":"e_1_3_2_57_2","doi-asserted-by":"crossref","first-page":"1","DOI":"10.1145\/3077618","article-title":"2017. Students\u2019 misconceptions and other difficulties in introductory programming: A literature review","volume":"18","author":"Qian Yizhou","year":"2017","unstructured":"Yizhou Qian and James Lehman. 2017. Students\u2019 misconceptions and other difficulties in introductory programming: A literature review. ACM Transactions on Computing Education 18, 1 (2017), 1\u201324.","journal-title":"ACM Transactions on Computing Education"},{"key":"e_1_3_2_58_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-39583-8_12"},{"key":"e_1_3_2_59_2","unstructured":"Rust contributors. 2024. Ruff. Astral. Retrieved from https:\/\/github.com\/astral-sh\/ruff"},{"key":"e_1_3_2_60_2","doi-asserted-by":"publisher","DOI":"10.1145\/3231644.3231708"},{"key":"e_1_3_2_61_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICCSE51940.2021.9569444"},{"key":"e_1_3_2_62_2","unstructured":"SonarQube contributors. 2024. SonarQube. Retrieved from https:\/\/www.sonarsource.com\/products\/sonarqube\/"},{"key":"e_1_3_2_63_2","doi-asserted-by":"publisher","DOI":"10.1145\/2999541.2999555"},{"key":"e_1_3_2_64_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE-SEET58685.2023.00031"},{"key":"e_1_3_2_65_2","doi-asserted-by":"publisher","DOI":"10.1145\/3287324.3287463"},{"key":"e_1_3_2_66_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.infsof.2017.01.006"},{"key":"e_1_3_2_67_2","doi-asserted-by":"publisher","DOI":"10.1145\/3472673.3473961"},{"key":"e_1_3_2_68_2","doi-asserted-by":"publisher","DOI":"10.1145\/3626252.3630773"},{"key":"e_1_3_2_69_2","unstructured":"WPS contributors. 2023. Wemake-Python-Styleguide. Retrieved from https:\/\/github.com\/wemake-services\/wemake-python-styleguide"},{"key":"e_1_3_2_70_2","doi-asserted-by":"publisher","DOI":"10.1145\/3649217.3653638"}],"container-title":["ACM Transactions on Computing Education"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3749996","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,22]],"date-time":"2025-10-22T14:48:39Z","timestamp":1761144519000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3749996"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,10,22]]},"references-count":69,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2025,12,31]]}},"alternative-id":["10.1145\/3749996"],"URL":"https:\/\/doi.org\/10.1145\/3749996","relation":{},"ISSN":["1946-6226"],"issn-type":[{"value":"1946-6226","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,10,22]]},"assertion":[{"value":"2025-01-29","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-06-05","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-10-22","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}