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.
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- Samantha DePasque and Elizabeth Tricomi. 2015. Effects of intrinsic motivation on feedback processing during learning. NeuroImage 119(2015), 175–186.Google ScholarCross Ref
- 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 ScholarCross Ref
- Martin Fowler. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley, Boston, MA, USA.Google ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- John Hattie. 2009. Visible Learning: A Synthesis of Over 800 Meta-Analyses Relating to Achievement. https://doi.org/10.4324/9780203887332Google Scholar
- 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 Scholar
- 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 ScholarCross Ref
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- P. Louridas. 2006. Static code analysis. IEEE Software 23, 4 (2006), 58–61. https://doi.org/10.1109/MS.2006.114Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- Maria Montessori. 1959. The absorbent mind. Lulu. com.Google Scholar
- 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 ScholarCross Ref
- 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 Scholar
- Susanne Narciss. 2013. Designing and evaluating tutoring feedback strategies for digital learning. Digital Education Review23 (2013), 7–26.Google Scholar
- J. Novak, A. Krajnc, and R. Žontar. 2010. Taxonomy of static code analysis tools. In The 33rd International Convention MIPRO. 418–422.Google Scholar
- 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 Scholar
- 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 ScholarCross Ref
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- 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 ScholarCross Ref
Index Terms
- Code Perfumes: Reporting Good Code to Encourage Learners
Recommendations
Common Bugs in Scratch Programs
ITiCSE '20: Proceedings of the 2020 ACM Conference on Innovation and Technology in Computer Science EducationBugs in SCRATCH programs can spoil the fun and inhibit learning success. Many common bugs are the result of recurring patterns of bad code. In this paper we present a collection of common code patterns that typically hint at bugs in SCRATCH programs, ...
A review of code smell mining techniques
Over the past 15years, researchers presented numerous techniques and tools for mining code smells. It is imperative to classify, compare, and evaluate existing techniques and tools used for the detection of code smells because of their varying features ...
Revisiting code smells in block based languages
WiPSCE '20: Proceedings of the 15th Workshop on Primary and Secondary Computing EducationCode smells in block based languages have received much attention in recent years. There is a concern that they should be targeted early so that learners develop good programming habits. This study revisits the code smells identified in earlier work and ...
Comments