skip to main content
10.1145/3689187.3709615acmconferencesArticle/Chapter ViewAbstractPublication PagesiticseConference Proceedingsconference-collections
research-article
Open access

Introducing Code Quality at CS1 Level: Examples and Activities

Published: 23 January 2025 Publication History

Abstract

Characterising code quality is a challenge that was addressed by a previous ITiCSE Working Group (Börstler et al., 2017). As emerged from that study, educators, developers, and students have different perceptions of the aspects involved. The perception of code quality by CS1 students develops from the feedback they receive when submitting practical work. As a consequence of increasingly large classes and the widespread use of autograders, student code is predominantly assessed based on functional correctness, emphasising a machine-oriented perspective with scarce or no feedback given about human-oriented aspects of code quality. Such limited perception of code quality may negatively impact how students understand, create, and interact with code artefacts. Although Börstler et al. concluded that "code quality should be discussed more thoroughly in educational programs", the lack of materials and time constraints have slowed down progress in that regard.
The goal of this Working Group is to support CS1 instructors who want to introduce a broader perspective on code quality in their classroom, by providing a curated list of examples and activities suitable for novices. In order to achieve this goal, we have extracted from the CS education literature a range of examples and activities, which have then been analysed and organised in terms of code quality dimensions. We have also mapped the topics covered in those materials to existing taxonomies relevant to code quality in CS1. Based on this work, we provide: (1) a catalogue of examples that illustrates the range of quality defects that could be addressed at CS1 level; and (2) a sample set of activities devised to introduce code quality to CS1 students. These materials have the potential to help educators address the subject in more depth.

References

[1]
Harold Abelson, Gerald Jay Sussman, and Julie Sussman. 1984. Structure and Interpretation of Computer Programs. MIT Press, Cambridge, MA, USA. First edition.
[2]
Felix Adler, Gordon Fraser, Eva Gründinger, Nina Körber, Simon Labrenz, Jonas Lerchenberger, Stephan Lukasczyk, and Sebastian Schweikl. 2021. Improving Readability of Scratch Programs with Search-based Refactoring. In 2021 IEEE 21st International Working Conference on Source Code Analysis and Manipulation (SCAM). IEEE, NY, 120--130. https://doi.org/10.1109/SCAM52516.2021.00023
[3]
Kirsti Ala-Mutka, Toni Uimonen, and Hannu-Matti Järvinen. 2004. Supporting Students in C Programming Courses with Automatic Program Style Assessment. JITE, Vol. 3 (01 2004), 245--262. https://doi.org/10.28945/300
[4]
Ella Albrecht and Jens Grabowski. 2020. Sometimes It's Just Sloppiness - Studying Students' Programming Errors and Misconceptions. In Proceedings of the 51st ACM Technical Symposium on Computer Science Education (Portland, OR, USA) (SIGCSE '20). Association for Computing Machinery, New York, NY, USA, 340--345. https://doi.org/10.1145/3328778.3366862
[5]
Francisco Alfredo, André L. Santos, and Nuno Garrido. 2022. Sprinter: A Didactic Linter for Structured Programming. In Third International Computer Programming Education Conference (ICPEC 2022) (Open Access Series in Informatics (OASIcs), Vol. 102), Alberto Sim oes and Jo ao Carlos Silva (Eds.). Schloss Dagstuhl -- Leibniz-Zentrum für Informatik, Dagstuhl, Germany, 2:1--2:8. https://doi.org/10.4230/OASIcs.ICPEC.2022.2
[6]
Eman Abdullah AlOmar, Mohamed Wiem Mkaouer, and Ali Ouni. 2024. Automating Source Code Refactoring in the Classroom. In Proceedings of the 55th ACM Technical Symposium on Computer Science Education V. 1 (Portland, OR, USA) (SIGCSE 2024). Association for Computing Machinery, New York, NY, USA, 60--66. https://doi.org/10.1145/3626252.3630787
[7]
Lorin W. Anderson and David R. Krathwohl (Eds.). 2001. Taxonomy for Learning, Teaching and Assessing: A Revision of Bloom's Taxonomy of Educational Objectives. Longman, New York.
[8]
Raul Andrade and João Brunet. 2018. Can students help themselves? An investigation of students' feedback on the quality of the source code. In 2018 IEEE Frontiers in Education Conference (FIE). IEEE, NY, 1--8. https://doi.org/10.1109/FIE.2018.8658503
[9]
Eliane Araujo, Dalton Serey, and Jorge Figueiredo. 2016. Qualitative aspects of students' programs: Can we make them measurable?. In 2016 IEEE Frontiers in Education Conference (FIE). IEEE, NY, 1--8. https://doi.org/10.1109/FIE.2016.7757725
[10]
Pasquale Ardimento, Mario Luca Bernardi, and Marta Cimitile. 2020. Software Analytics to Support Students in Object-Oriented Programming Tasks: An Empirical Study. IEEE Access, Vol. 8 (2020), 132171--132187. https://doi.org/10.1109/ACCESS.2020.3010172
[11]
Yu Bai, Tao Wang, and Huaimin Wang. 2019. Amelioration of Teaching Strategies by Exploring Code Quality and Submission Behavior. IEEE Access, Vol. 7 (2019), 152744--152754. https://doi.org/10.1109/ACCESS.2019.2948640
[12]
Gergő Balogh. 2015. Comparison of Software Quality in the Work of Children and Professional Developers Based on Their Classroom Exercises. In Computational Science and Its Applications -- ICCSA 2015, Osvaldo Gervasi, Beniamino Murgante, Sanjay Misra, Marina L. Gavrilova, Ana Maria Alves Coutinho Rocha, Carmelo Torre, David Taniar, and Bernady O. Apduhan (Eds.). Springer International Publishing, Cham, 36--46.
[13]
Elisa Baniassad, Ivan Beschastnikh, Reid Holmes, Gregor Kiczales, and Meghan Allen. 2019. Learning to listen for design. In Proceedings of the 2019 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Athens, Greece) (Onward! 2019). Association for Computing Machinery, New York, NY, USA, 179--186. https://doi.org/10.1145/3359591.3359738
[14]
Amanda Berg, Simon Osnes, and Richard Glassey. 2022. If in Doubt, Try Three: Developing Better Version Control Commit Behaviour with First Year Students. In Proceedings of the 53rd ACM Technical Symposium on Computer Science Education - Volume 1 (Providence, RI, USA) (SIGCSE 2022). Association for Computing Machinery, New York, NY, USA, 362--368. https://doi.org/10.1145/3478431.3499371
[15]
J. B. Biggs and K. F Collis. 1982. Evaluating the quality of learning: The SOLO taxonomy (Structure of the Observed Learning Outcome). Academic Press, New York, USA.
[16]
Anastasiia Birillo, Elizaveta Artser, Yaroslav Golubev, Maria Tigina, Hieke Keuning, Nikolay Vyahhi, and Timofey Bryksin. 2023. Detecting Code Quality Issues in Pre-Written Templates of Programming Tasks in Online Courses. In Proceedings of the 2023 Conference on Innovation and Technology in Computer Science Education V. 1 (Turku, Finland) (ITiCSE 2023). Association for Computing Machinery, New York, NY, USA, 152--158. https://doi.org/10.1145/3587102.3588800
[17]
Anastasiia Birillo, Ilya Vlasov, Artyom Burylov, Vitalii Selishchev, Artyom Goncharov, Elena Tikhomirova, Nikolay Vyahhi, and Timofey Bryksin. 2022. Hyperstyle: A Tool for Assessing the Code Quality of Solutions to Programming Assignments. In Proc. of the 53rd ACM Tech. Symposium on Computer Science Education (Providence, RI, USA) (SIGCSE 2022). ACM, New York, NY, USA, 307--313.
[18]
Jeremiah Blanchard, John R. Hott, Vincent Berry, Rebecca Carroll, Bob Edmison, Richard Glassey, Oscar Karnalim, Brian Plancher, and Seán Russell. 2022. Stop Reinventing the Wheel! Promoting Community Software in Computing Education. In Proceedings of the 2022 Working Group Reports on Innovation and Technology in Computer Science Education (Dublin, Ireland) (ITiCSE-WGR '22). Association for Computing Machinery, New York, NY, USA, 261--292. https://doi.org/10.1145/3571785.3574129
[19]
Hannah Blau and J. Eliot B. Moss. 2015. FrenchPress Gives Students Automated Feedback on Java Program Flaws. In Proceedings of the 2015 ACM Conference on Innovation and Technology in Computer Science Education (Vilnius, Lithuania) (ITiCSE '15). Association for Computing Machinery, New York, NY, USA, 15--20. https://doi.org/10.1145/2729094.2742622
[20]
Sofia Bobadilla, Richard Glassey, Alexandre Bergel, and Martin Monperrus. 2024. SOBO: A Feedback Bot to Nudge Code Quality in Programming Courses. IEEE Software, Vol. 41, 2 (2024), 68--76. https://doi.org/10.1109/MS.2023.3298729
[21]
Jürgen Börstler, Kwabena E Bennin, Sara Hooshangi, Johan Jeuring, Hieke Keuning, Carsten Kleiner, Bonnie MacKellar, Rodrigo Duran, Harald Störrle, Daniel Toll, et al. 2023. Developers talking about code quality. Empirical Software Engineering, Vol. 28, 6 (2023), 128.
[22]
Jürgen Börstler, Michael E. Caspersen, and Marie Nordström. 2016. Beauty and the Beast: on the readability of object-oriented example programs. Software Quality Journal, Vol. 24, 2 (2016), 231--246. https://doi.org/10.1007/s11219-015--9267--5
[23]
Jürgen Börstler, Marie Nordström, and James H. Paterson. 2011. On the Quality of Examples in Introductory Java Textbooks. Trans. Comput. Educ., Vol. 11, 1, Article 3 (Feb. 2011), 21 pages. http://doi.acm.org/1921607.1921610
[24]
Jürgen Börstler, Harald Störrle, Daniel Toll, Jelle van Assema, Rodrigo Duran, Sara Hooshangi, Johan Jeuring, Hieke Keuning, Carsten Kleiner, and Bonnie MacKellar. 2018. "I Know It When I See It" Perceptions of Code Quality: ITiCSE '17 Working Group Report. In Proc. of the 2017 ITiCSE Conference on Working Group Reports (Bologna, Italy) (ITiCSE-WGR '17). ACM, New York, NY, USA, 70--85.
[25]
Dennis M. Breuker, Jan Derriks, and Jacob Brunekreef. 2011. Measuring Static Quality of Student Code. In Proceedings of the 16th Annual Joint Conference on Innovation and Technology in Computer Science Education (Darmstadt, Germany) (ITiCSE '11). Association for Computing Machinery, New York, NY, USA, 13--17. https://doi.org/10.1145/1999747.1999754
[26]
Richard K. Brewer. 1976. Documentation standards for beginning students. In Proceedings of the ACM SIGCSE-SIGCUE Technical Symposium on Computer Science and Education (SIGCSE '76). Association for Computing Machinery, New York, NY, USA, 69--73. https://doi.org/10.1145/800107.803450
[27]
Aline Brito, Andre Hora, and Marco Tulio Valente. 2022. Understanding Refactoring Tasks over Time: A Study Using Refactoring Graphs. In Anais do XXV Congresso Ibero-Americano em Engenharia de Software (Córdoba). SBC, Porto Alegre, RS, Brasil, 330--344. https://doi.org/10.5753/cibse.2022.20982
[28]
Brandon Carlson. 2008. An Agile Classroom Experience: Teaching TDD and Refactoring. In Agile 2008 Conference. IEEE, NY, 465--469. https://doi.org/10.1109/Agile.2008.39
[29]
Charis Charitsis, Chris Piech, and John C. Mitchell. 2022. Function Names: Quantifying the Relationship Between Identifiers and Their Functionality to Improve Them. In Proceedings of the Ninth ACM Conference on Learning @ Scale (New York City, NY, USA) (L@S '22). Association for Computing Machinery, New York, NY, USA, 93--101. https://doi.org/10.1145/3491140.3528269
[30]
Hsi-Min Chen, Wei-Han Chen, and Chi-Chen Lee. 2018. An Automated Assessment System for Analysis of Coding Convention Violations in Java Programming Assignments. Journal of Information Science and Engineering, Vol. 34, 5 (Sep 2018), 1203--1221. https://doi.org/10.6688/JISE.20180934(5).0006
[31]
Alexandru Chirvase, Laura Ruse, Mihnea Muraru, Mariana Mocanu, and Vlad Ciobanu. 2021. Clean Code - Delivering A Lightweight Course. In 2021 23rd International Conference on Control Systems and Computer Science (CSCS). IEEE, NY, 420--423. https://doi.org/10.1109/CSCS52396.2021.00075
[32]
Rohan Roy Choudhury, HeZheng Yin, Joseph Moghadam, and Armando Fox. 2016. AutoStyle: Toward Coding Style Feedback At Scale. In Proceedings of the 19th ACM Conference on Computer Supported Cooperative Work and Social Computing Companion (San Francisco, California, USA) (CSCW '16 Companion). Association for Computing Machinery, New York, NY, USA, 21--24. https://doi.org/10.1145/2818052.2874315
[33]
Wellesley College. 2000. Simplifying Boolean Expressions and Conditionals. http://cs111.wellesley.edu/ cs111/archive/cs111_spring00/public_html/lectures/boolean-simplification.html
[34]
Yania Crespo, Arturo Gonzalez-Escribano, and Mario Piattini. 2021. Carrot and Stick approaches revisited when managing Technical Debt in an educational context. In 2021 IEEE/ACM International Conference on Technical Debt (TechDebt). IEEE, NY, 99--108. https://doi.org/10.1109/TechDebt52882.2021.00020
[35]
Carlos Dantas, Adriano Rocha, and Marcelo Maia. 2023. Assessing the Readability of ChatGPT Code Snippet Recommendations: A Comparative Study. In Proceedings of the XXXVII Brazilian Symposium on Software Engineering (Campo Grande, Brazil) (SBES '23). Association for Computing Machinery, New York, NY, USA, 283--292. https://doi.org/10.1145/3613372.3613413
[36]
Pedro Henrique de Andrade Gomes, Rogério Eduardo Garcia, Gabriel Spadon, Danilo Medeiros Eler, Celso Olivete, and Ronaldo Celso Messias Correia. 2017. Teaching software quality via source code inspection tool. In 2017 IEEE Frontiers in Education Conference (FIE). IEEE, NY, 1--8. https://doi.org/10.1109/FIE.2017.8190658
[37]
Eustáquio S ao José De Faria, Juan Manuel Adán-Coello, and Keiji Yamanaka. 2006. Forming Groups for Collaborative Learning in Introductory Computer Programming Courses Based on Students' Programming Styles: An Empirical Study. In Proceedings. Frontiers in Education. 36th Annual Conference. IEEE, NY, 6--11. https://doi.org/10.1109/FIE.2006.322313
[38]
Giuseppe De Ruvo, Ewan Tempero, Andrew Luxton-Reilly, and Nasser Giacaman. 2018a. Unencapsulated Collection: A Teachable Design Smell. In Proceedings of the 49th ACM Technical Symposium on Computer Science Education (Baltimore, Maryland, USA) (SIGCSE '18). Association for Computing Machinery, New York, NY, USA, 332--337. https://doi.org/10.1145/3159450.3159469
[39]
Giuseppe De Ruvo, Ewan Tempero, Andrew Luxton-Reilly, Gerard B. Rowe, and Nasser Giacaman. 2018b. Understanding Semantic Style by Analysing Student Code. In Proceedings of the 20th Australasian Computing Education Conference (Brisbane, Queensland, Australia) (ACE '18). Association for Computing Machinery, New York, NY, USA, 73--82. https://doi.org/10.1145/3160489.3160500
[40]
Tomche Delev and Dejan Gjorgjevikj. 2017. Static analysis of source code written by novice programmers. In 2017 IEEE Global Engineering Education Conference (EDUCON). IEEE, NY, 825--830. https://doi.org/10.1109/EDUCON.2017.7942942
[41]
Linus Dietz, Johannes Manner, Simon Harrer, and Jörg Lenhard. 2018. Teaching Clean Code. In SE-WS 2018: Software Engineering Workshops 2018 (Ulm, Germany) (CEUR Workshop Proceedings, Vol. 2066). ceur-ws.org, Ulm, Germany, 24--27. https://ceur-ws.org/Vol-2066/ Combined Proceedings of the Workshops of the German Software Engineering Conference 2018 (SE 2018); Ulm, Germany, March 6, 2018.
[42]
Niels Doorn, Tanja Vos, Beatriz Marín, and Erik Barendsen. 2023. Set the right example when teaching programming: Test Informed Learning with Examples (TILE). In 2023 IEEE Conference on Software Testing, Verification and Validation (ICST). IEEE, NY, 269--280. https://doi.org/10.1109/ICST57152.2023.00033
[43]
Hoyama Maria dos Santos, Vinicius H. S. Durelli, Maurício Souza, Eduardo Figueiredo, Lucas Timoteo da Silva, and Rafael S. Durelli. 2019. CleanGame: Gamifying the Identification of Code Smells. In Proceedings of the XXXIII Brazilian Symposium on Software Engineering (Salvador, Brazil) (SBES '19). Association for Computing Machinery, New York, NY, USA, 437--446. https://doi.org/10.1145/3350768.3352490
[44]
Benedict du Boulay. 1986. Some difficulties of learning to program. Journal of Educational Computing Research, Vol. 2, 1 (1986), 57--73.
[45]
Stephen H. Edwards, Nischel Kandru, and Mukund B.M. Rajagopal. 2017. Investigating Static Analysis Errors in Student Java Programs. In Proceedings of the 2017 ACM Conference on International Computing Education Research (Tacoma, Washington, USA) (ICER '17). ACM, New York, NY, USA, 65--73. https://doi.org/10.1145/3105726.3106182
[46]
Davide Falessi and Philippe Kruchten. 2015. Five Reasons for Including Technical Debt in the Software Engineering Curriculum. In Proceedings of the 2015 European Conference on Software Architecture Workshops (Dubrovnik, Cavtat, Croatia) (ECSAW '15). Association for Computing Machinery, New York, NY, USA, Article 28, 4 pages. https://doi.org/10.1145/2797433.2797462
[47]
Amin Milani Fard and Ali Mesbah. 2013. JSNOSE: Detecting JavaScript Code Smells. In 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM). IEEE, NY, 116--125. https://doi.org/10.1109/SCAM.2013.6648192
[48]
Ansgar Fehnker and Remco de Man. 2019. Detecting and Addressing Design Smells in Novice Processing Programs. In Computer Supported Education, Bruce M. McLaren, Rob Reilly, Susan Zvacek, and James Uhomoibhi (Eds.). Springer International Publishing, Cham, 507--531.
[49]
Ann E. Fleury. 2001. Encapsualtion and reuse as viewed by java students. In Proceedings of the Thirty-Second SIGCSE Technical Symposium on Computer Science Education (Charlotte, North Carolina, USA) (SIGCSE '01). Association for Computing Machinery, New York, NY, USA, 189--193. https://doi.org/10.1145/364447.364582
[50]
Martin Fowler and Kent Beck. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley, USA.
[51]
Nobuo Funabiki, Takuya Ogawa, Nobuya Ishihara, Minoru Kuribayashi, and Wen-Chung Kao. 2016. A Proposal of Coding Rule Learning Function in Java Programming Learning Assistant System. In 2016 10th International Conference on Complex, Intelligent, and Software Intensive Systems (CISIS). IEEE, NY, 561--566. https://doi.org/10.1109/CISIS.2016.94
[52]
Iris Gaber and Amir Kirsh. 2018. The Effect of Reporting Known Issues on Students' Work. In Proc. of the 49th ACM Tech. Symposium on Computer Science Education (Baltimore, Maryland, USA) (SIGCSE '18). ACM, New York, NY, USA, 74--79.
[53]
Iris Gaber and Amir Kirsh. 2021. Using Examples as Guideposts for Programming Exercises: Providing Support while Preserving the Challenge. In 16th International Conference on Computer Science & Education (ICCSE). IEEE, NY, 391--397. https://doi.org/10.1109/ICCSE51940.2021.9569541
[54]
Nupur Garg and Aaron W. Keen. 2018. Earthworm: Automated Decomposition Suggestions. In Proceedings of the 18th Koli Calling International Conference on Computing Education Research (Koli, Finland) (Koli Calling '18). Association for Computing Machinery, New York, NY, USA, Article 16, 5 pages. https://doi.org/10.1145/3279720.3279736
[55]
Pedro Henrique Gomes, Rogério Eduardo Garcia, Danilo Medeiros Eler, Ronaldo Celso Correia, and Celso Olivete Junior. 2021. Software Quality as a Subsidy for Teaching Programming. In 2021 IEEE Frontiers in Education Conference (FIE). IEEE, NY, 1--9. https://doi.org/10.1109/FIE49875.2021.9637475
[56]
Wouter Groeneveld, Dries Martin, Tibo Poncelet, and Kris Aerts. 2022. Are Undergraduate Creative Coders Clean Coders? A Correlation Study. In Proceedings of the 53rd ACM Technical Symposium on Computer Science Education V. 1 (Providence, RI, USA) (SIGCSE 2022). Association for Computing Machinery, New York, NY, USA, 314--320. https://doi.org/10.1145/3478431.3499345
[57]
Rowan Hart, Brian Hays, Connor McMillin, El Kindi Rezig, Gustavo Rodriguez-Rivera, and Jeffrey A. Turkstra. 2023. Eastwood-Tidy: C Linting for Automated Code Style Assessment in Programming Courses. In Proceedings of the 54th ACM Technical Symposium on Computer Science Education V. 1 (Toronto ON, Canada) (SIGCSE 2023). Association for Computing Machinery, New York, NY, USA, 799--805. https://doi.org/10.1145/3545945.3569817
[58]
Hiroaki Hashiura, Saeko Matsuura, and Seiichi Komiya. 2010. A tool for diagnosing the quality of java program and a method for its effective utilization in education. In Proceedings of the 9th WSEAS International Conference on Applications of Computer Engineering (Penang, Malaysia) (ACE'10). World Scientific and Engineering Academy and Society (WSEAS), Stevens Point, Wisconsin, USA, 276--282.
[59]
Felienne Hermans and Efthimia Aivaloglou. 2016. Do code smells hamper novice programming? A controlled experiment on Scratch programs. In 2016 IEEE 24th International Conference on Program Comprehension (ICPC). IEEE, NY, 1--10. https://doi.org/10.1109/ICPC.2016.7503706
[60]
Zhewei Hu and Edward F. Gehringer. 2019. Improving Feedback on GitHub Pull Requests: A Bots Approach. In 2019 IEEE Frontiers in Education Conference (FIE). IEEE, NY, 1--9. https://doi.org/10.1109/FIE43999.2019.9028685
[61]
Christopher Hundhausen, Anukrati Agrawal, Dana Fairbrother, and Michael Trevisan. 2009. Integrating Pedagogical Code Reviews into a CS1 Course: An Empirical Study. In Proceedings of the 40th ACM Technical Symposium on Computer Science Education (Chattanooga, TN, USA) (SIGCSE '09). Association for Computing Machinery, New York, NY, USA, 291--295. https://doi.org/10.1145/1508865.1508972
[62]
Callum Iddon, Nasser Giacaman, and Valerio Terragni. 2023. GRADESTYLE: GitHub-Integrated and Automated Assessment of Java Code Style. In 2023 IEEE/ACM 45th International Conference on Software Engineering: Software Engineering Education and Training (ICSE-SEET). IEEE, NY, 192--197. https://doi.org/10.1109/ICSE-SEET58685.2023.00024
[63]
Essa Imhmed, Edgar Ceh-Varela, Hashim Abu-Gellban, and Scott Kilgore. 2024. Fostering Code Quality Practices Among Undergraduate Novice Programmers. J. Comput. Sci. Coll., Vol. 39, 7 (may 2024), 21--32.
[64]
Yuki Ito, Atsuo Hazeyama, Yasuhiko Morimoto, Hiroaki Kaminaga, Shoichi Nakamura, and Youzou Miyadera. 2014. A Method for Detecting Bad Smells and ITS Application to Software Engineering Education. In 2014 IIAI 3rd International Conference on Advanced Applied Informatics. IEEE, NY, 670--675. https://doi.org/10.1109/IIAI-AAI.2014.139
[65]
Cruz Izu. 2022. Modelling the Use of Abstraction in Algorithmic Problem Solving. In Proceedings of the 27th ACM Conference on on Innovation and Technology in Computer Science Education Vol. 1 (Dublin, Ireland) (ITiCSE '22). Association for Computing Machinery, New York, NY, USA, 193--199. https://doi.org/10.1145/3502718.3524758
[66]
Cruz Izu and Shrey Chandra. 2022. Are We There Yet? Novices' Code Smells linked to Loop Constructs. In Proceedings of the 53rd ACM Technical Symposium on Computer Science Education V. 2 (Providence, RI, USA) (SIGCSE 2022). Association for Computing Machinery, New York, NY, USA, 1151. https://doi.org/10.1145/3478432.3499064
[67]
Cruz Izu, Paul Denny, and Sayoni Roy. 2022. A Resource to Support Novices Refactoring Conditional Statements. In Proc. of the 27th ACM Conf. on Innovation and Technology in Computer Science Education (Dublin, Ireland) (ITiCSE '22). ACM, New York, NY, USA, 344--350.
[68]
Cruz Izu and Claudio Mirolo. 2023. Exploring CS1 Student's Notions of Code Quality. In Proceedings of the 2023 Conference on Innovation and Technology in Computer Science Education V. 1 (Turku, Finland) (ITiCSE 2023). Association for Computing Machinery, New York, NY, USA, 12--18. https://doi.org/10.1145/3587102.3588808
[69]
Cruz Izu and Claudio Mirolo. 2024a. Asking Students to Refactor their Code: A Simple and Valuable Exercise. In Proceedings of the 2024 on Innovation and Technology in Computer Science Education V. 1 (Milan, Italy) (ITiCSE 2024). Association for Computing Machinery, New York, NY, USA, 73--79. https://doi.org/10.1145/3649217.3653546
[70]
Cruz Izu and Claudio Mirolo. 2024b. Introduction to Code Quality at CS1 Level: Examples and Activities (v1). https://doi.org/10.5281/zenodo.14258104
[71]
Cruz Izu and Claudio Mirolo. 2024c. Towards Comprehensive Assessment of Code Quality at CS1-level: Tools, Rubrics and Refactoring Rules. In 2024 IEEE Global Engineering Education Conference (EDUCON) (Kos Island, Greece). IEEE, NY, 1--10. https://doi.org/10.1109/EDUCON60312.2024.10578672
[72]
Cruz Izu, Carsten Schulte, Ashish Aggarwal, Quintin Cutts, Rodrigo Duran, Mirela Gutica, Birte Heinemann, Eileen Kraemer, Violetta Lonati, Claudio Mirolo, and et al. 2019. Fostering Program Comprehension in Novice Programmers - Learning Activities and Learning Trajectories. In Proceedings of the Working Group Reports on Innovation and Technology in Computer Science Education (Aberdeen, Scotland Uk) (ITiCSE-WGR '19). Association for Computing Machinery, New York, NY, USA, 27--52. https://doi.org/10.1145/3344429.3372501
[73]
Julian Jansen, Ana Oprescu, and Magiel Bruntink. 2017. The Impact of Automated Code Quality Feedback in Programming Education. In SATToSE 2017: Seminar on Advanced Techniques and Tools for Software Evolution (Madrid, Spain) (CEUR Workshop Proceedings, Vol. 2070). ceur-ws.org, Madrid, Spain, 19 pages. https://ceur-ws.org/Vol-2070/ Post-proceedings of the Tenth Seminar on Advanced Techniques and Tools for Software Evolution.
[74]
Lucy Jiang, Robert Rewcastle, Paul Denny, and Ewan Tempero. 2020. CompareCFG: Providing Visual Feedback on Code Quality Using Control Flow Graphs. In Proceedings of the 2020 ACM Conference on Innovation and Technology in Computer Science Education (Trondheim, Norway) (ITiCSE '20). Association for Computing Machinery, New York, NY, USA, 493--499. https://doi.org/10.1145/3341525.3387362
[75]
Saj-Nicole A. Joni and Elliot Soloway. 1986. But My Program Runs! Discourse Rules for Novice Programmers. Journal of Educational Computing Research, Vol. 2, 1 (1986), 95--125. https://doi.org/10.2190/6E5W-AR7C-NX76-HUT2
[76]
Lisa C. Kaczmarczyk, Elizabeth R. Petrick, J. Philip East, and Geoffrey L. Herman. 2010. Identifying Student Misconceptions of Programming. In Proceedings of the 41st ACM Technical Symposium on Computer Science Education (Milwaukee, Wisconsin, USA) (SIGCSE '10). ACM, New York, NY, USA, 107--111. https://doi.org/10.1145/1734263.1734299
[77]
Oscar Karnalim and Simon. 2021. Promoting Code Quality via Automated Feedback on Student Submissions. In 2021 IEEE Frontiers in Education Conference (FIE). IEEE, NY, 1--5. https://doi.org/10.1109/FIE49875.2021.9637193
[78]
Remin Kasahara, Kazunori Sakamoto, Hironori Washizaki, and Yoshiaki Fukazawa. 2019. Applying Gamification to Motivate Students to Write High-Quality Code in Programming Assignments. In Proc. of the 2019 ACM Conf. on Innovation and Technology in Computer Science Education (Aberdeen, Scotland Uk) (ITiCSE '19). ACM, New York, NY, USA, 92--98.
[79]
Aaron Keen and Kurt Mammen. 2015. Program Decomposition and Complexity in CS1. In Proceedings of the 46th ACM Technical Symposium on Computer Science Education (Kansas City, Missouri, USA) (SIGCSE '15). Association for Computing Machinery, New York, NY, USA, 48--53. https://doi.org/10.1145/2676723.2677219
[80]
Brian W Kernighan and P. J. Plauger. 1978. The elements of programming style, 2nd edition. McGraw-Hill, NY.
[81]
Hieke Keuning. 2020. Automated Feedback for Learning Code Refactoring. Ph.,D. Dissertation. Open Universiteit. https://research.ou.nl/en/publications/automated-feedback-for-learning-code-refactoring
[82]
Hieke Keuning, Bastiaan Heeren, and Johan Jeuring. 2017. Code Quality Issues in Student Programs. In Proceedings of the 2017 ACM Conference on Innovation and Technology in Computer Science Education (Bologna, Italy) (ITiCSE '17). Association for Computing Machinery, New York, NY, USA, 110--115. https://doi.org/10.1145/3059009.3059061
[83]
Hieke Keuning, Bastiaan Heeren, and Johan Jeuring. 2020. Student Refactoring Behaviour in a Programming Tutor. In Proceedings of the 20th Koli Calling International Conference on Computing Education Research (Koli, Finland) (Koli Calling '20). Association for Computing Machinery, New York, NY, USA, Article 4, 10 pages. https://doi.org/10.1145/3428029.3428043
[84]
Hieke Keuning, Bastiaan Heeren, and Johan Jeuring. 2021. A Tutoring System to Learn Code Refactoring. In Proceedings of the 52nd ACM Technical Symposium on Computer Science Education (Virtual Event, USA) (SIGCSE '21). Association for Computing Machinery, New York, NY, USA, 562--568. https://doi.org/10.1145/3408877.3432526
[85]
Hieke Keuning, Johan Jeuring, and Bastiaan Heeren. 2023. A Systematic Mapping Study of Code Quality in Education. In Proc. of the 2023 Conf. on Innovation and Technology in Computer Science Education (Turku, Finland) (ITiCSE 2023). ACM, New York, NY, USA, 5--11.
[86]
Diana Kirk, Tyne Crow, Andrew Luxton-Reilly, and Ewan Tempero. 2020a. On Assuring Learning About Code Quality. In Proceedings of the Twenty-Second Australasian Computing Education Conference (Melbourne, VIC, Australia) (ACE'20). Association for Computing Machinery, New York, NY, USA, 86--94. https://doi.org/10.1145/3373165.3373175
[87]
Diana Kirk, Tyne Crow, Andrew Luxton-Reilly, and Ewan Tempero. 2022. Teaching Code Quality in High School Programming Courses - Understanding Teachers' Needs. In Australasian Computing Education Conference (Virtual Event, Australia) (ACE '22). ACM, New York, NY, USA, 36--45.
[88]
Diana Kirk, Andrew Luxton-Reilly, and Ewan Tempero. 2024. A Literature-Informed Model for Code Style Principles to Support Teachers of Text-Based Programming. In Proceedings of the 26th Australasian Computing Education Conference (Sydney, NSW, Australia) (ACE '24). Association for Computing Machinery, New York, NY, USA, 134--143. https://doi.org/10.1145/3636243.3636258
[89]
Diana Kirk, Ewan Tempero, Andrew Luxton-Reilly, and Tyne Crow. 2020b. High School Teachers' Understanding of Code Style. In Proceedings of the 20th Koli Calling International Conference on Computing Education Research (Koli, Finland) (Koli Calling '20). Association for Computing Machinery, New York, NY, USA, Article 12, 10 pages. https://doi.org/10.1145/3428029.3428047
[90]
Amruth N. Kumar. 2022. Refactoring Examples. https://problets.org/courses/opl/refactoring/index.html.
[91]
Mario Leyva. 2023. Refactoring Tutor: An IDE Integrated Tool for Practicing Key Techniques to Refactor Code. Master's thesis. Master of Engineering, Massachusetts Institute of Technology.
[92]
David Liu, Jonathan Calver, and Michelle Craig. 2024. A Static Analysis Tool in CS1: Student Usage and Perceptions of PythonTA. In Proceedings of the 26th Australasian Computing Education Conference (Sydney, NSW, Australia) (ACE '24). Association for Computing Machinery, New York, NY, USA, 172--181. https://doi.org/10.1145/3636243.3636262
[93]
David Liu and Andrew Petersen. 2019. Static Analyses in Python Programming Courses. In Proceedings of the 50th ACM Technical Symposium on Computer Science Education (Minneapolis, MN, USA) (SIGCSE '19). Association for Computing Machinery, New York, NY, USA, 666--671. https://doi.org/10.1145/3287324.3287503
[94]
Xiao Liu and Gyun Woo. 2020. Applying Code Quality Detection in Online Programming Judge. In Proceedings of the 2020 5th International Conference on Intelligent Information Technology (Hanoi, Viet Nam) (ICIIT 2020). Association for Computing Machinery, New York, NY, USA, 56--60. https://doi.org/10.1145/3385209.3385226
[95]
Carlos López, Jesús M. Alonso, Raúl Marticorena, and Jesús M. Maudes. 2014. Design of e-activities for the learning of code refactoring tasks. In 2014 International Symposium on Computers in Education (SIIE). IEEE, NY, 35--40. https://doi.org/10.1109/SIIE.2014.7017701
[96]
Shaoxiao Lu, Xu Wang, Haici Zhou, Qing Sun, Wenge Rong, and Ji Wu. 2021. Anomaly Detection for Early Warning in Object-oriented Programming Course. In 2021 IEEE International Conference on Engineering, Technology & Education (TALE). IEEE, NY, 01--08. https://doi.org/10.1109/TALE52509.2021.9678677
[97]
Nikola Luburić, Dragan Vidaković, Jelena Slivka, Simona Prokić, Katarina-Glorija Grujić, Aleksandar Kovav cević, and Goran Sladić. 2022. Clean Code Tutoring: Makings of a Foundation. In Proceedings of the 14th International Conference on Computer Supported Education - Volume 1: CSEDU. INSTICC, SciTePress, Setúbal, Portugal, 137--148. https://doi.org/10.5220/0010800900003182
[98]
Roope Luukkainen, Jussi Kasurinen, Uolevi Nikula, and Valentina Lenarduzzi. 2022. ASPA: A static analyser to support learning and continuous feedback on programming courses. An empirical validation. In Proceedings of the ACM/IEEE 44th International Conference on Software Engineering: Software Engineering Education and Training (Pittsburgh, Pennsylvania) (ICSE-SEET '22). Association for Computing Machinery, New York, NY, USA, 29--39. https://doi.org/10.1145/3510456.3514149
[99]
Yuzhi Ma and Eli Tilevich. 2021. ”You have said too much”: Java-like verbosity anti-patterns in Python codebases. In Proceedings of the 2021 ACM SIGPLAN International Symposium on SPLASH-E (Chicago, IL, USA) (SPLASH-E 2021). Association for Computing Machinery, New York, NY, USA, 13----18. https://doi.org/10.1145/3484272.3484960
[100]
S. M"akelä and V. Lepp"anen. 2004. Japroch: A tool for checking programming style. In Proceedings of the Koli Calling International Conference on Computing Education Research (Kolin Kolistelut-Koli Calling, Finland) (Koli Calling 2004). Espoo : Helsinki University of Technology, Koli, Finland, 151.
[101]
M.V. M"antyl"a. 2005. An experiment on subjective evolvability evaluation of object-oriented software: explaining factors and interrater agreement. In 2005 International Symposium on Empirical Software Engineering, 2005. IEEE, NY, 10 pages. https://doi.org/10.1109/ISESE.2005.1541837
[102]
M. M"antyl"a, J. Vanhanen, and C. Lassenius. 2003. A taxonomy and an initial empirical study of bad smells in code. In International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings. IEEE, NY, 381--384. https://doi.org/10.1109/ICSM.2003.1235447
[103]
Kirby McMaster, Samuel Sambasivam, and Stuart Wolthuis. 2013. Teaching programming style with ugly code. In Proceedings of the Information Systems Educators Conference, Vol. 2167. Education Special Interest Group of the AITP, San Antonio, Texas, USA, 1435.
[104]
Kirby McMaster, Samuel Sambasivam, and Stuart Wolthuis. 2014. Software development using C: beauty-and-the-beast. Issues in Informing Science and Information Technology, Vol. 11 (2014), 073--084.
[105]
Susan A. Mengel and Vinay Yerramilli. 1999. A Case Study of the Static Analysis of the Quality of Novice Student Programs. In The Proceedings of the Thirtieth SIGCSE Technical Symposium on Computer Science Education (New Orleans, Louisiana, USA) (SIGCSE '99). Association for Computing Machinery, New York, NY, USA, 78--82. https://doi.org/10.1145/299649.299689
[106]
Marcus Messer, Neil C. C. Brown, Michael Kölling, and Miaojing Shi. 2024. Automated Grading and Feedback Tools for Programming Education: A Systematic Review. ACM Trans. Comput. Educ., Vol. 24, 1, Article 10 (feb 2024), 43 pages. https://doi.org/10.1145/3636515
[107]
G. Michaelson. 1996. Automatic analysis of functional program style. In Proceedings of 1996 Australian Software Engineering Conference. IEEE, NY, 38--46. https://doi.org/10.1109/ASWEC.1996.534121
[108]
Naouel Moha, Yann-Gael Gueheneuc, Laurence Duchien, and Anne-Francoise Le Meur. 2010. DECOR: A Method for the Specification and Detection of Code and Design Smells. IEEE Transactions on Software Engineering, Vol. 36, 1 (2010), 20--36. https://doi.org/10.1109/TSE.2009.50
[109]
Mustafa Alrifaee Mohammad Abdallah. 1970. A Heuristic Tool for Measuring Software Quality Using Program Language Standards. The International Arab Journal of Information Technology (IAJIT), Vol. 19, 03 (1970), 314--322. https://doi.org/10.34028/iajit/19/3/4
[110]
Arthur-Jozsef Molnar, Simona Motogna, and Cristina Vlad. 2020. Using static analysis tools to assist student project evaluation. In Proceedings of the 2nd ACM SIGSOFT International Workshop on Education through Advanced Software Engineering and Artificial Intelligence (Virtual, USA) (EASEAI 2020). Association for Computing Machinery, New York, NY, USA, 7--12. https://doi.org/10.1145/3412453.3423195
[111]
Marcos Nascimento, Eliane Araújo, Dalton Serey, and Jorge Figueiredo. 2020. The Role of Source Code Vocabulary in Programming Teaching and Learning. In 2020 IEEE Frontiers in Education Conference (FIE) (Uppsala). IEEE Press, NY, 1--8. https://doi.org/10.1109/FIE44824.2020.9274137
[112]
Eduardo Oliveira, Hieke Keuning, and Johan Jeuring. 2023. Student Code Refactoring Misconceptions. In Proceedings of the 2023 Conference on Innovation and Technology in Computer Science Education V. 1 (Turku, Finland) (ITiCSE 2023). Association for Computing Machinery, New York, NY, USA, 19--25. https://doi.org/10.1145/3587102.3588840
[113]
Paul W. Oman and Curtis R. Cook. 1991. A programming style taxonomy. Journal of Systems and Software, Vol. 15, 3 (1991), 287--301. https://doi.org/10.1016/0164--1212(91)90044--7
[114]
J. Walker Orr. 2022. Automatic assessment of the design quality of student python and java programs. J. Comput. Sci. Coll., Vol. 38, 1 (nov 2022), 27--36.
[115]
Nick Parlante, Julie Zelenski, Eric S. Roberts, Jed Rembold, Ben Stephenson, Jonathan Hudson, Stephanie Valentine, Juliette Woodrow, Kathleen Creel, Nick Bowman, Larry "Joshua" Crotts, Andrew Matzureff, and Mike Izbicki. 2022. Nifty Assignments. In Proceedings of the 53rd ACM Technical Symposium on Computer Science Education V. 2 (Providence, RI, USA) (SIGCSE 2022). Association for Computing Machinery, New York, NY, USA, 1067--1068. https://doi.org/10.1145/3478432.3499268
[116]
Harrie Passier, Sylvia Stuurman, and Harold Pootjes. 2014. Beautiful JavaScript: how to guide students to create good and elegant code. In Proceedings of the Computer Science Education Research Conference (Berlin, Germany) (CSERC '14). Association for Computing Machinery, New York, NY, USA, 65--76. https://doi.org/10.1145/2691352.2691358
[117]
James Perretta, Westley Weimer, and Andrew DeOrio. 2019. Human vs. Automated Coding Style Grading in Computing Education. In Proc. of the 126th Annual ASEE Conference. American Society for Engineering Education, DC, 12 pages. https://doi.org/10.18260/1--2--32906
[118]
Raymond Pettit, John Homer, Roger Gee, Susan Mengel, and Adam Starbuck. 2015. An Empirical Study of Iterative Improvement in Programming Assignments. In Proceedings of the 46th ACM Technical Symposium on Computer Science Education (Kansas City, Missouri, USA) (SIGCSE '15). Association for Computing Machinery, New York, NY, USA, 410--415. https://doi.org/10.1145/2676723.2677279
[119]
Bernard John Poole and Timothy S. Meyer. 1996. Implementing a set of guidelines for CS majors in the production of program code. SIGCSE Bull., Vol. 28, 2 (jun 1996), 43--48. https://doi.org/10.1145/228296.228304
[120]
Yuliia Prokop, Olena Trofymenko, and Olexander Zadereyko. 2023. Developing students' code style skills. In 2023 IEEE 18th International Conference on Computer Science and Information Technologies (CSIT). IEEE, NY, 1--4. https://doi.org/10.1109/CSIT61576.2023.10324182
[121]
Lin Qiu and Christopher Riesbeck. 2008. An incremental model for developing educational critiquing systems: Experiences with the Java Critiquer. Jl. of Interactive Learning Research, Vol. 19, 1 (2008), 119--145.
[122]
Sarnath Ramnath and Brahma Dathan. 2008. Evolving an integrated curriculum for object-oriented analysis and design. In Proceedings of the 39th SIGCSE Technical Symposium on Computer Science Education (Portland, OR, USA) (SIGCSE '08). Association for Computing Machinery, New York, NY, USA, 337--341. https://doi.org/10.1145/1352135.1352252
[123]
Anna v Rechtáv cková, Radek Pelánek, and Tomáv s Effenberger. 2024. Catalog of Code Quality Defects in Introductory Programming. In Proceedings of the 2024 on Innovation and Technology in Computer Science Education V. 1 (Milan, Italy) (ITiCSE 2024). Association for Computing Machinery, New York, NY, USA, 59--65. https://doi.org/10.1145/3649217.3653638
[124]
P.A. Relf. 2005. Tool assisted identifier naming for improved software readability: an empirical study. In 2005 International Symposium on Empirical Software Engineering, 2005. IEEE, NY, 10 pp.--. https://doi.org/10.1109/ISESE.2005.1541814
[125]
Sally S. Robinson and M. L. Soffa. 1980. An instructional aid for student programs. In Proceedings of the Eleventh SIGCSE Technical Symposium on Computer Science Education (Kansas City, Missouri, USA) (SIGCSE '80). Association for Computing Machinery, New York, NY, USA, 118--129. https://doi.org/10.1145/800140.804623
[126]
Dean Sanders and Janet Hartman. 1987. Assessing the quality of programs: a topic for the CS2 course. In Proceedings of the Eighteenth SIGCSE Technical Symposium on Computer Science Education (St. Louis, Missouri, USA) (SIGCSE '87). Association for Computing Machinery, New York, NY, USA, 92--96. https://doi.org/10.1145/31820.31741
[127]
Kate Sanders, Marzieh Ahmadzadeh, Tony Clear, Stephen H. Edwards, Mikey Goldweber, Chris Johnson, Raymond Lister, Robert McCartney, Elizabeth Patitsas, and Jaime Spacco. 2013a. The Canterbury QuestionBank: Building a Repository of Multiple-choice CS1 and CS2 Questions. In Proceedings of the ITiCSE Working Group Reports Conference on Innovation and Technology in Computer Science Education-working Group Reports (Canterbury, England, United Kingdom) (ITiCSE -WGR '13). ACM, New York, NY, USA, 33--52. https://doi.org/10.1145/2543882.2543885
[128]
Kate Sanders, Marzieh Ahmadzadeh, Tony Clear, Stephen H. Edwards, Mikey Goldweber, Chris Johnson, Raymond Lister, Robert McCartney, Elizabeth Patitsas, and Jaime Spacco. 2013b. The Canterbury QuestionBank: building a repository of multiple-choice CS1 and CS2 questions. In Proceedings of the ITiCSE Working Group Reports Conference on Innovation and Technology in Computer Science Education-Working Group Reports (Canterbury, England, United Kingdom) (ITiCSE -WGR '13). Association for Computing Machinery, New York, NY, USA, 33--52. https://doi.org/10.1145/2543882.2543885
[129]
Carsten Schulte. 2008. Block Model: An Educational Model of Program Comprehension As a Tool for a Scholarly Approach to Teaching. In Proceedings of the Fourth International Workshop on Computing Education Research (Sydney, Australia) (ICER '08). ACM, New York, NY, USA, 149--160. https://doi.org/10.1145/1404520.1404535
[130]
Carsten Schulte, Tony Clear, Ahmad Taherkhani, Teresa Busjahn, and James H. Paterson. 2010. An Introduction to Program Comprehension for Computer Science Educators. In Proceedings of the 2010 ITiCSE Working Group Reports (Ankara, Turkey) (ITiCSE-WGR '10). ACM, New York, NY, USA, 65--86. https://doi.org/10.1145/1971681.1971687
[131]
Rika Sekimoto and Kenji Kaijiri. 2000. A Diagnosis System of Programming Styles Using Program Patterns. IEICE Transactions on Information and Systems, Vol. E83-D, 4 (04 2000), 722--728.
[132]
Allyson Senger, Stephen H. Edwards, and Margaret Ellis. 2022. Helping Student Programmers Through Industrial-Strength Static Analysis: A Replication Study. In Proceedings of the 53rd ACM Technical Symposium on Computer Science Education - Volume 1 (Providence, RI, USA) (SIGCSE 2022). Association for Computing Machinery, New York, NY, USA, 8--14. https://doi.org/10.1145/3478431.3499310
[133]
Eryck Pedro da Silva, Ricardo Caceffo, and Rodolfo Azevedo. 2023. When Test Cases Are Not Enough: Identification, Assessment, and Rationale of Misconceptions in Correct Code ($MC^3$). Brazilian Journal of Computers in Education, Vol. 31 (Dec. 2023), 1165--1199. https://doi.org/10.5753/rbie.2023.3552
[134]
Suzanne Smith, Sara Stoecklin, and Catharina Serino. 2006. An innovative approach to teaching refactoring. In Proceedings of the 37th SIGCSE Technical Symposium on Computer Science Education (Houston, Texas, USA) (SIGCSE '06). Association for Computing Machinery, New York, NY, USA, 349--353. https://doi.org/10.1145/1121341.1121451
[135]
Suzanne Smith, Sara F. Stoecklin, and Judy Mullins. 2004. Taking cohesion into the classroom. J. Comput. Sci. Coll., Vol. 20, 2 (dec 2004), 296--303.
[136]
E. Soloway. 1986. Learning to program = learning to construct mechanisms and explanations. Commun. ACM, Vol. 29, 9 (sep 1986), 850--858. https://doi.org/10.1145/6592.6594
[137]
Elliot Soloway, Jeffrey Bonar, and Kate Ehrlich. 1983. Cognitive Strategies and Looping Constructs: An Empirical Study. Commun. ACM, Vol. 26, 11 (Nov. 1983), 853--860. https://doi.org/10.1145/182.358436
[138]
Sai Krishna Sripada and Y. Raghu Reddy. 2015. Code Comprehension Activities in Undergraduate Software Engineering Course - A Case Study. In 2015 24th Australasian Software Engineering Conference. IEEE, NY, 68--77. https://doi.org/10.1109/ASWEC.2015.18
[139]
Martijn Stegeman, Erik Barendsen, and Sjaak Smetsers. 2014. Towards an Empirically Validated Model for Assessment of Code Quality. In Proceedings of the 14th Koli Calling International Conference on Computing Education Research (Koli, Finland) (Koli Calling '14). Association for Computing Machinery, New York, NY, USA, 99--108. https://doi.org/10.1145/2674683.2674702
[140]
Martijn Stegeman, Erik Barendsen, and Sjaak Smetsers. 2016. Designing a Rubric for Feedback on Code Quality in Programming Courses. In Proceedings of the 16th Koli Calling International Conference on Computing Education Research (Koli, Finland) (Koli Calling '16). Association for Computing Machinery, New York, NY, USA, 160--164. https://doi.org/10.1145/2999541.2999555
[141]
Sara Stoecklin, Suzanne Smith, and Catharina Serino. 2007. Teaching students to build well formed object-oriented methods through refactoring. In Proceedings of the 38th SIGCSE Technical Symposium on Computer Science Education (Covington, Kentucky, USA) (SIGCSE '07). Association for Computing Machinery, New York, NY, USA, 145--149. https://doi.org/10.1145/1227310.1227364
[142]
Ivan Tan and Christopher M. Poskitt. 2024. Fixing Your Own Smells: Adding a Mistake-Based Familiarisation Step When Teaching Code Refactoring. In Proceedings of the 55th ACM Technical Symposium on Computer Science Education V. 1 (Portland, OR, USA) (SIGCSE 2024). Association for Computing Machinery, New York, NY, USA, 1307--1313. https://doi.org/10.1145/3626252.3630856
[143]
Stuti Tandon, Vijay Kumar, and V.B. Singh. 2024. Study of Code Smells: A Review and Research Agenda. International Journal of Mathematical, Engineering and Management Sciences, Vol. 9, 3 (2024), 472--498. https://doi.org/10.33889/IJMEMS.2024.9.3.025
[144]
Peeratham Techapalokul and Eli Tilevich. 2017. Understanding recurring quality problems and their impact on code sharing in block-based software. In 2017 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). IEEE, NY, 43--51. https://doi.org/10.1109/VLHCC.2017.8103449
[145]
Veronika Thurner. 2019. Fostering the Comprehension of the Object-Oriented Programming Paradigm by a Virtual Lab Exercise. In 2019 5th Experiment International Conference (exp.at'19). IEEE, NY, 137--142. https://doi.org/10.1109/EXPAT.2019.8876484
[146]
Sirazum Munira Tisha, Rufino A. Oregon, Gerald Baumgartner, Fernando Alegre, and Juana Moreno. 2023. An automatic grading system for a high school-level computational thinking course. In Proceedings of the 4th International Workshop on Software Engineering Education for the Next Generation (Pittsburgh, Pennsylvania) (SEENG '22). Association for Computing Machinery, New York, NY, USA, 20--27. https://doi.org/10.1145/3528231.3528357
[147]
Nghi Truong, Paul Roe, and Peter Bancroft. 2004. Static analysis of students' Java programs. In Proceedings of the Sixth Australasian Conference on Computing Education - Volume 30 (Dunedin, New Zealand) (ACE '04). Australian Computer Society, Inc., AUS, 317--325.
[148]
Leo C Ureel II. 2020. Critiquing Antipatterns In Novice Code. Ph.,D. Dissertation. Michigan Technological University.
[149]
Leo C. Ureel II and Charles Wallace. 2019. Automated Critique of Early Programming Antipatterns. In Proceedings of the 50th ACM Technical Symposium on Computer Science Education (Minneapolis, MN, USA) (SIGCSE '19). Association for Computing Machinery, New York, NY, USA, 738--744. https://doi.org/10.1145/3287324.3287463 ISECON 2012.
[150]
Ashok Kumar Veerasamy, Daryl D'Souza, and Mikko-Jussi Laakso. 2016. Identifying Novice Student Programming Misconceptions and Errors From Summative Assessments. Journal of Educational Technology Systems, Vol. 45, 1 (2016), 50--73. https://doi.org/10.1177/0047239515627263
[151]
Leslie Waguespack. 2008. Hammers, Nails, Windows, Doors and Teaching Great Design. Information Systems Education Journal, Vol. 6, 45 (2008), 3--18. http://isedj.org/6/45/
[152]
Leslie Waguespack. 2013. A Design Quality Learning Unit in Relational Data Modeling Based on Thriving Systems Properties. Information Systems Education Journal, Vol. 11, 4 (2013), 18--30. http://isedj.org/2013--11/ A preliminary version appears in The Proceedings of ISECON 2012.
[153]
Leslie Waguespack. 2015. A Design Quality Learning Unit in OOa Modeling Bridging the Engineer and the Artist. Information Systems Education Journal, Vol. 13, 1 (2015), 58--70. http://isedj.org/2015--13/
[154]
Tomoyoshi Wakabayashi, Shinpei Ogata, and Saeko Matsuura. 2011. Dependency analysis for learning class structure for novice Java programmer. In 2011 IEEE 2nd International Conference on Software Engineering and Service Science. IEEE, NY, 532--535. https://doi.org/10.1109/ICSESS.2011.5982370
[155]
Yanqing Wang. 2011. Research and Practice on Education of SQA at Source Code Level. International Journal of Engineering Education, Vol. 27 (01 2011), 70--76.
[156]
Jacqueline Whalley, Tony Clear, Phil Robbins, and Errol Thompson. 2011. Salient elements in novice solutions to code writing problems. In Proceedings of the Thirteenth Australasian Computing Education Conference - Volume 114 (Perth, Australia) (ACE '11). Australian Computer Society, Inc., AUS, 37--46.
[157]
Jacqueline Whalley and Nadia Kasto. 2013. Revisiting Models of Human Conceptualisation in the Context of a Programming Examination. In Proceedings of the Fifteenth Australasian Computing Education Conference - Volume 136 (Adelaide, Australia) (ACE '13). Australian Computer Society, Inc., Darlinghurst, Australia, Australia, 67--76. http://dl.acm.org/citation.cfm?id=2667199.2667207
[158]
Eliane Wiese, Anna N. Rafferty, and Jordan Pyper. 2022. Readable vs. Writable Code: A Survey of Intermediate Students' Structure Choices. In Proceedings of the 53rd ACM Technical Symposium on Computer Science Education - Volume 1 (Providence, RI, USA) (SIGCSE 2022). Association for Computing Machinery, New York, NY, USA, 321--327. https://doi.org/10.1145/3478431.3499413
[159]
Eliane S. Wiese, Anna N. Rafferty, and Armando Fox. 2019a. Linking Code Readability, Structure, and Comprehension among Novices: It's Complicated. In Proceedings of the 41st International Conference on Software Engineering: Software Engineering Education and Training (Montreal, Quebec, Canada) (ICSE-SEET '19). IEEE Press, NY, 84--94. https://doi.org/10.1109/ICSE-SEET.2019.00017
[160]
Eliane S. Wiese, Anna N. Rafferty, Daniel M. Kopta, and Jacqulyn M. Anderson. 2019b. Replicating Novices' Struggles with Coding Style. In 2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC). IEEE, NY, 13--18. https://doi.org/10.1109/ICPC.2019.00015
[161]
Juliette Woodrow, Ali Malik, and Chris Piech. 2024. AI Teaches the Art of Elegant Coding: Timely, Fair, and Helpful Style Feedback in a Global Course. In Proceedings of the 55th ACM Technical Symposium on Computer Science Education V. 1 (Portland, OR, USA) (SIGCSE 2024). Association for Computing Machinery, New York, NY, USA, 1442--1448. https://doi.org/10.1145/3626252.3630773
[162]
Wei Xu, Chao Wu, and Jianliang Lu. 2021. Exploration of Experimental Teaching Reforms on C Programming Design Course. In 2021 International Symposium on Advances in Informatics, Electronics and Education (ISAIEE). IEEE, NY, 330--333. https://doi.org/10.1109/ISAIEE55071.2021.00086
[163]
Susilo Veri Yulianto and Inggriani Liem. 2014. Automatic grader for programming assignment using source code analyzer. In 2014 International Conference on Data and Software Engineering (ICODSE). IEEE, NY, 1--4. https://doi.org/10.1109/ICODSE.2014.7062687
[164]
Marsha Zaidman. 2004. Teaching defensive programming in Java. J. Comput. Sci. Coll., Vol. 19, 3 (2004), 33--43.
[165]
Imre Zsigmond., Maria Iuliana Bocicor., and Arthur-Jozsef Molnar. 2020. Gamification based Learning Environment for Computer Science Students. In Proceedings of the 15th International Conference on Evaluation of Novel Approaches to Software Engineering - ENASE. INSTICC, SciTePress, Setúbal, Portugal, 556--563. https://doi.org/10.5220/0009579305560563

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
ITiCSE 2024: 2024 Working Group Reports on Innovation and Technology in Computer Science Education
January 2025
353 pages
ISBN:9798400712081
DOI:10.1145/3689187
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike International 4.0 License.

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 23 January 2025

Check for updates

Author Tags

  1. CS1
  2. activities
  3. code quality
  4. examples
  5. readability
  6. refactoring
  7. style

Qualifiers

  • Research-article

Conference

ITiCSE 2024
Sponsor:

Acceptance Rates

Overall Acceptance Rate 552 of 1,613 submissions, 34%

Upcoming Conference

ITiCSE '25
Innovation and Technology in Computer Science Education
June 27 - July 2, 2025
Nijmegen , Netherlands

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • 0
    Total Citations
  • 150
    Total Downloads
  • Downloads (Last 12 months)150
  • Downloads (Last 6 weeks)150
Reflects downloads up to 20 Feb 2025

Other Metrics

Citations

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media