skip to main content
10.1145/3481312.3481346acmotherconferencesArticle/Chapter ViewAbstractPublication PageswipsceConference Proceedingsconference-collections
research-article

Code Perfumes: Reporting Good Code to Encourage Learners

Published:19 October 2021Publication History

ABSTRACT

Block-based programming languages like enable children to be creative while learning to program. Even though the block-based approach simplifies the creation of programs, learning to program can nevertheless be challenging. Automated tools such as linters therefore support learners by providing feedback about potential bugs or code smells in their programs. Even when this feedback is elaborate and constructive, it still represents purely negative criticism and by construction ignores what learners have done correctly in their programs. In this paper we introduce an orthogonal approach to linting: We complement the criticism produced by a linter with positive feedback. We introduce the concept of code perfumes as the counterpart to code smells, indicating the correct application of programming practices considered to be good. By analysing not only what learners did wrong but also what they did right we hope to encourage learners, to provide teachers and students a better understanding of learners’ progress, and to support the adoption of automated feedback tools. Using a catalogue of 25 code perfumes for, we empirically demonstrate that these represent frequent practices in, and we find that better programs indeed contain more code perfumes.

References

  1. Kashif Amanullah and Tim Bell. 2018. Analysing students’ scratch programs and addressing issues using elementary patterns. In 2018 IEEE Frontiers in Education Conference (FIE). IEEE, 1–5.Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Kashif Amanullah and Tim Bell. 2020. Teaching Resources for Young Programmers: the use of Patterns. In 2020 IEEE Frontiers in Education Conference (FIE). IEEE, 1–9.Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Bryce Boe, Charlotte Hill, Michelle Len, Greg Dreschler, Phillip Conrad, and Diana Franklin. 2013. Hairball: Lint-inspired static analysis of scratch projects. SIGCSE 2013 - Proceedings of the 44th ACM Technical Symposium on Computer Science Education, 215–220. https://doi.org/10.1145/2445196.2445265Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Edward L Deci, Richard Koestner, and Richard M Ryan. 1999. A meta-analytic review of experiments examining the effects of extrinsic rewards on intrinsic motivation.Psychological bulletin 125, 6 (1999), 627.Google ScholarGoogle Scholar
  5. Samantha DePasque and Elizabeth Tricomi. 2015. Effects of intrinsic motivation on feedback processing during learning. NeuroImage 119(2015), 175–186.Google ScholarGoogle ScholarCross RefCross Ref
  6. Ayelet Fishbach, Tal Eyal, and Stacey R Finkelstein. 2010. How positive and negative feedback motivate goal pursuit. Social and Personality Psychology Compass 4, 8 (2010), 517–530.Google ScholarGoogle ScholarCross RefCross Ref
  7. Martin Fowler. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley, Boston, MA, USA.Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Gordon Fraser, Ute Heuer, Nina Körber, Florian Obermüller, and Ewald Wasmeier. 2021. LitterBox: A Linter for Scratch Programs. arXiv preprint arXiv:2102.07440(2021).Google ScholarGoogle Scholar
  9. Christoph Frädrich, Florian Obermüller, Nina Körber, Ute Heuer, and Gordon Fraser. 2020. Common Bugs in Scratch Programs. In Proceedings of the 2020 ACM Conference on Innovation and Technology in Computer Science Education (Trondheim, Norway) (ITiCSE ’20). 89–95. https://doi.org/10.1145/3341525.3387389Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. John Hattie. 2009. Visible Learning: A Synthesis of Over 800 Meta-Analyses Relating to Achievement. https://doi.org/10.4324/9780203887332Google ScholarGoogle Scholar
  11. John AC Hattie and Gregory CR Yates. 2014. Using feedback to promote learning. Applying science of learning in education: Infusing psychological science into the curriculum (2014), 45–58.Google ScholarGoogle Scholar
  12. 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). 1–10. https://doi.org/10.1109/ICPC.2016.7503706Google ScholarGoogle ScholarCross RefCross Ref
  13. Felienne Hermans, Kathryn T. Stolee, and David Hoepelman. 2016. Smells in Block-Based Programming Languages. In 2016 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC) (Cambridge, United Kingdom, 2016-09). IEEE, 68–72. https://doi.org/10.1109/VLHCC.2016.7739666Google ScholarGoogle Scholar
  14. David Hovemeyer and William Pugh. 2004. Finding Bugs is Easy. SIGPLAN Not. 39, 12 (Dec. 2004), 92–106. https://doi.org/10.1145/1052883.1052895Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. David E Johnson. 2016. ITCH: Individual Testing of Computer Homework for Scratch Assignments. In Proceedings of the 47th ACM Technical Symposium on Computing Science Education. ACM, 223–227.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. P. Louridas. 2006. Static code analysis. IEEE Software 23, 4 (2006), 58–61. https://doi.org/10.1109/MS.2006.114Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. John Maloney, Mitchel Resnick, Natalie Rusk, Brian Silverman, and Evelyn Eastmond. 2010. The Scratch Programming Language and Environment. ACM Transactions on Computing Education (TOCE) 10 (11 2010), 16. https://doi.org/10.1145/1868358.1868363Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Monica M. McGill and Adrienne Decker. 2020. Tools, Languages, and Environments Used in Primary and Secondary Computing Education. 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, 103–109. https://doi.org/10.1145/3341525.3387365Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Orni Meerbaum-Salant, Michal Armoni, and Mordechai Ben-Ari. 2011. Habits of Programming in Scratch. 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, 168–172. https://doi.org/10.1145/1999747.1999796Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Tilman Michaeli and Ralf Romeike. 2019. Current Status and Perspectives of Debugging in the K12 Classroom: A Qualitative Study. In 2019 IEEE Global Engineering Education Conference (EDUCON). IEEE, 1030–1038.Google ScholarGoogle Scholar
  21. Maria Montessori. 1959. The absorbent mind. Lulu. com.Google ScholarGoogle Scholar
  22. Jesús Moreno-León and Gregorio Robles. 2014. Automatic detection of bad programming habits in scratch: A preliminary study. In 2014 IEEE Frontiers in Education Conference (FIE) Proceedings. 1–4. https://doi.org/10.1109/FIE.2014.7044055Google ScholarGoogle ScholarCross RefCross Ref
  23. Jesús Moreno-León, Gregorio Robles, and Marcos Román-González. 2015. Dr. Scratch: Automatic Analysis of Scratch Projects to Assess and Foster Computational Thinking. RED-Revista de Educación a Distancia (09 2015).Google ScholarGoogle Scholar
  24. Susanne Narciss. 2013. Designing and evaluating tutoring feedback strategies for digital learning. Digital Education Review23 (2013), 7–26.Google ScholarGoogle Scholar
  25. J. Novak, A. Krajnc, and R. Žontar. 2010. Taxonomy of static code analysis tools. In The 33rd International Convention MIPRO. 418–422.Google ScholarGoogle Scholar
  26. Richard M Ryan and Edward L Deci. 2000. Intrinsic and extrinsic motivations: Classic definitions and new directions. Contemporary educational psychology 25, 1 (2000), 54–67.Google ScholarGoogle Scholar
  27. Richard M Ryan and Edward L Deci. 2000. When rewards compete with nature: The undermining of intrinsic motivation and self-regulation. In Intrinsic and extrinsic motivation. Elsevier, 13–54.Google ScholarGoogle ScholarCross RefCross Ref
  28. Linda Seiter and Brendan Foreman. 2013. Modeling the learning progressions of computational thinking of primary grade students. In Proceedings of the ninth annual international ACM conference on International computing education research. 59–66.Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. Sue Sentance and Andrew Csizmadia. 2017. Computing in the curriculum: Challenges and strategies from a teacher’s perspective. Education and Information Technologies 22, 2 (2017), 469–495.Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Andreas Stahlbauer, Christoph Frädrich, and Gordon Fraser. 2020. Verified from Scratch: Program Analysis for Learners’ Programs. In In Proceedings of the International Conference on Automated Software Engineering (ASE). IEEE.Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Andreas Stahlbauer, Marvin Kreis, and Gordon Fraser. 2019. Testing scratch programs automatically. In Proceedings of the 2019 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 165–175.Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Mike Talbot, Katharina Geldreich, Julia Sommer, and Peter Hubwieser. 2020. Re-use of programming patterns or problem solving? representation of scratch programs by TGraphs to support static code analysis. In Proceedings of the 15th Workshop on Primary and Secondary Computing Education. 1–10.Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Peeratham Techapalokul and Eli Tilevich. 2017. Quality Hound — An online code smell analyzer for scratch programs. In 2017 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). 337–338. https://doi.org/10.1109/VLHCC.2017.8103498Google ScholarGoogle ScholarCross RefCross Ref
  34. 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) (Raleigh, NC, USA, 2017-10). IEEE, 43–51. https://doi.org/10.1109/VLHCC.2017.8103449Google ScholarGoogle Scholar
  35. Linda Werner, Jill Denner, Shannon Campe, and David M Torres. 2020. Computational sophistication of games programmed by children: a model for its measurement. ACM Transactions on Computing Education (TOCE) 20, 2 (2020), 1–23.Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Benedikt Wisniewski, Klaus Zierer, and John Hattie. 2020. The power of feedback revisited: A meta-analysis of educational feedback research. Frontiers in Psychology 10 (2020), 3087.Google ScholarGoogle ScholarCross RefCross Ref
  37. Aman Yadav, Sarah Gretter, Susanne Hambrusch, and Phil Sands. 2016. Expanding computer science education in schools: understanding teacher experiences and challenges. Computer Science Education 26, 4 (2016), 235–254.Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Code Perfumes: Reporting Good Code to Encourage Learners
          Index terms have been assigned to the content through auto-classification.

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            cover image ACM Other conferences
            WiPSCE '21: Proceedings of the 16th Workshop in Primary and Secondary Computing Education
            October 2021
            119 pages
            ISBN:9781450385718
            DOI:10.1145/3481312

            Copyright © 2021 ACM

            Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 19 October 2021

            Permissions

            Request permissions about this article.

            Request Permissions

            Check for updates

            Qualifiers

            • research-article
            • Research
            • Refereed limited

            Acceptance Rates

            Overall Acceptance Rate104of279submissions,37%

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader

          HTML Format

          View this article in HTML Format .

          View HTML Format