ABSTRACT
Many introductory programming courses employ graphics libraries that promote engagement and enable fun visuals. However, student excitement over graphical outputs is not a guarantee of conceptual understanding of programming, and graphics may even distract from intended learning outcomes. Our contribution is twofold. First, we analyze a selection of existing graphics libraries designed for novice programmers. We consider how these libraries foster clean decomposition, direct students’ attention to key content, and manage complexity; we find shortcomings in these respects. These shortcomings involve the libraries’ support for global coordinates and external graphics, as well as their rich APIs; we argue that these features, although powerful, are also potential pitfalls in student learning. Second, we present the design of a new graphics library, PyTamaro, which avoids the pitfalls with a minimalist design that eschews coordinates; we also outline a pedagogical approach that builds on PyTamaro’s strengths and deliberate limitations. We briefly discuss PyTamaro’s trade-offs in comparison to coordinate-based libraries. The work reported here paves the way for future empirical evaluations of PyTamaro and associated teaching practices.
- Harold Abelson and Andrea diSessa. 1981. Turtle Geometry: The Computer as a Medium for Exploring Mathematics. MIT Press, Cambridge, MA, USA. isbn:978-0-262-01063-4 Google ScholarCross Ref
- Carl Alphonce and Phil Ventura. 2003. Using Graphics to Support the Teaching of Fundamental Object-Oriented Principles in CS1. In Companion of the 18th Annual ACM SIGPLAN Conference on Object-oriented Programming, Systems, Languages, and Applications. ACM, Anaheim CA USA. 156–161. isbn:978-1-58113-751-4 https://doi.org/10.1145/949344.949391 Google ScholarDigital Library
- Aivar Annamaa. 2015. Introducing Thonny, a Python IDE for Learning Programming. In Proceedings of the 15th Koli Calling Conference on Computing Education Research - Koli Calling ’15. ACM Press, Koli, Finland. 117–121. isbn:978-1-4503-4020-5 https://doi.org/10.1145/2828959.2828969 Google ScholarDigital Library
- Ian Barland, Robert Bruce Findler, and Matthew Flatt. 2010. The Design of a Functional Image Library. In Workshop on Scheme and Functional Programming (SFP). Google Scholar
- Mordechai Ben-Ari. 2001. Constructivism in Computer Science Education. Journal of Computers in Mathematics and Science Teaching, 20, 1 (2001), 45–73. Google ScholarDigital Library
- Karen Brennan and Mitchel Resnick. 2012. New Frameworks for Studying and Assessing the Development of Computational Thinking. In Proceedings of the 2012 Annual Meeting of the American Educational Research Association, Vancouver, Canada. 1, 25. Google Scholar
- Michael E. Caspersen and Jens Bennedsen. 2007. Instructional Design of a Programming Course: A Learning Theoretic Approach. In Proceedings of the Third International Workshop on Computing Education Research. ACM, Atlanta Georgia USA. 111–122. isbn:978-1-59593-841-1 https://doi.org/10.1145/1288580.1288595 Google ScholarDigital Library
- Luca Chiodini, Igor Moreno Santos, Andrea Gallidabino, Anya Tafliovich, André L. Santos, and Matthias Hauswirth. 2021. A Curated Inventory of Programming Language Misconceptions. In Proceedings of the 26th ACM Conference on Innovation and Technology in Computer Science Education V. 1 (ITiCSE ’21). Association for Computing Machinery, New York, NY, USA. 380–386. isbn:978-1-4503-8214-4 https://doi.org/10.1145/3430665.3456343 Google ScholarDigital Library
- Keith Devlin. 2003. Why Universities Require Computer Science Students to Take Math. Commun. ACM, 46, 9 (2003), Sept., 36. issn:00010782 https://doi.org/10.1145/903893.903917 Google ScholarDigital Library
- Matthias Felleisen. 1991. On the Expressive Power of Programming Languages. Science of Computer Programming, 17, 1 (1991), Dec., 35–75. issn:0167-6423 https://doi.org/10.1016/0167-6423(91)90036-W Google ScholarDigital Library
- Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, and Shriram Krishnamurthi. 2018. How to Design Programs, Second Edition: An Introduction to Programming and Computing. MIT Press. isbn:978-0-262-34412-8 Google Scholar
- Matthias Felleisen and Shriram Krishnamurthi. 2009. Why Computer Science Doesn’t Matter. Commun. ACM, 52, 7 (2009), July, 37–40. issn:0001-0782, 1557-7317 https://doi.org/10.1145/1538788.1538803 Google ScholarDigital Library
- Sally Fincher, Johan Jeuring, Craig S. Miller, Peter Donaldson, Benedict du Boulay, Matthias Hauswirth, Arto Hellas, Felienne Hermans, Colleen Lewis, Andreas Mühling, Janice L. Pearce, and Andrew Petersen. 2020. Notional Machines in Computing Education: The Education of Attention. In Proceedings of the Working Group Reports on Innovation and Technology in Computer Science Education (ITiCSE-WGR ’20). Association for Computing Machinery, New York, NY, USA. 21–50. isbn:978-1-4503-8293-9 https://doi.org/10.1145/3437800.3439202 Google ScholarDigital Library
- Sigbjorn Finne and Simon Peyton Jones. 1995. Pictures: A Simple Structured Graphics Model. In Proceedings of the 1995 Glasgow Workshop on Functional Programming. https://doi.org/10.14236/ewic/FP1995.6 Google ScholarCross Ref
- Kathi Fisler, Shriram Krishnamurthi, and Preston Tunnell Wilson. 2017. Assessing and Teaching Scope, Mutation, and Aliasing in Upper-Level Undergraduates. In Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education. ACM, Seattle Washington USA. 213–218. isbn:978-1-4503-4698-6 https://doi.org/10.1145/3017680.3017777 Google ScholarDigital Library
- Michael H. Goldwasser and David Letscher. 2009. A Graphics Package for the First Day and Beyond. ACM SIGCSE Bulletin, 41, 1 (2009), March, 206–210. issn:0097-8418 https://doi.org/10.1145/1539024.1508945 Google ScholarDigital Library
- Shuchi Grover and Satabdi Basu. 2017. Measuring Student Learning in Introductory Block-Based Programming: Examining Misconceptions of Loops, Variables, and Boolean Logic. In Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education (SIGCSE ’17). Association for Computing Machinery, New York, NY, USA. 267–272. isbn:978-1-4503-4698-6 https://doi.org/10.1145/3017680.3017723 Google ScholarDigital Library
- Philip J. Guo. 2018. Non-Native English Speakers Learning Computer Programming: Barriers, Desires, and Design Opportunities. In Proceedings of the 2018 CHI Conference on Human Factors in Computing Systems - CHI ’18. ACM Press, Montreal QC, Canada. 1–14. isbn:978-1-4503-5620-6 https://doi.org/10.1145/3173574.3173970 Google ScholarDigital Library
- Mark Guzdial. 2003. A Media Computation Course for Non-Majors. In Proceedings of the 8th Annual Conference on Innovation and Technology in Computer Science Education. ACM, Thessaloniki Greece. 104–108. isbn:978-1-58113-672-2 https://doi.org/10.1145/961511.961542 Google ScholarDigital Library
- Pontus Haglund, Filip Strömbäck, and Linda Mannila. 2021. Understanding Students’ Failure to Use Functions as a Tool for Abstraction – An Analysis of Questionnaire Responses and Lab Assignments in a CS1 Python Course. Informatics in Education, 20, 4 (2021), Dec., 583–614. issn:1648-5831, 2335-8971 https://doi.org/10.15388/infedu.2021.26 Google ScholarCross Ref
- Brian Harvey. 1997. Computer Science Logo Style: Beyond Programming (second ed.) (Exploring with LOGO, Vol. 3). MIT Press, Cambridge, MA, USA. isbn:978-0-262-58150-9 Google Scholar
- Peter Henderson. 1982. Functional Geometry. In Proceedings of the 1982 ACM Symposium on LISP and Functional Programming (LFP ’82). Association for Computing Machinery, New York, NY, USA. 179–187. isbn:978-0-89791-082-8 https://doi.org/10.1145/800068.802148 Google ScholarDigital Library
- Simon Holland, Robert Griffiths, and Mark Woodman. 1997. Avoiding Object Misconceptions. In Proceedings of the Twenty-eighth SIGCSE Technical Symposium on Computer Science Education (SIGCSE ’97). ACM, New York, NY, USA. 131–134. isbn:978-0-89791-889-3 https://doi.org/10.1145/268084.268132 Google ScholarDigital Library
- Kristina Holsapple and Austin Cory Bart. 2022. Designing Designer: The Evidence-Oriented Design Process of a Pedagogical Interactive Graphics Python Library. In Proceedings of the 53rd ACM Technical Symposium on Computer Science Education V. 1 (SIGCSE 2022). Association for Computing Machinery, New York, NY, USA. 85–91. isbn:978-1-4503-9070-5 https://doi.org/10.1145/3478431.3499363 Google ScholarDigital Library
- Cruz Izu and Peter Dinh. 2018. Can Novice Programmers Write C Functions? In 2018 IEEE International Conference on Teaching, Assessment, and Learning for Engineering (TALE). IEEE, Wollongong, NSW. 965–970. isbn:978-1-5386-6522-0 https://doi.org/10.1109/TALE.2018.8615375 Google ScholarCross Ref
- Fionnuala Johnson, Stephen McQuistin, and John O’Donnell. 2020. Analysis of Student Misconceptions Using Python as an Introductory Programming Language. In Proceedings of the 4th Conference on Computing Education Practice 2020. ACM, Durham United Kingdom. 1–4. isbn:978-1-4503-7729-4 https://doi.org/10.1145/3372356.3372360 Google ScholarDigital Library
- Cazembe Kennedy and Eileen T. Kraemer. 2019. Qualitative Observations of Student Reasoning: Coding in the Wild. In Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education. ACM, Aberdeen Scotland Uk. 224–230. isbn:978-1-4503-6895-7 https://doi.org/10.1145/3304221.3319751 Google ScholarDigital Library
- 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 (ITiCSE ’17). Association for Computing Machinery, New York, NY, USA. 110–115. isbn:978-1-4503-4704-4 https://doi.org/10.1145/3059009.3059061 Google ScholarDigital Library
- Jonathan Knudsen. 1999. Java 2D Graphics. O’Reilly. isbn:978-1-56592-484-0 Google Scholar
- Tobias Kohn. 2017. Teaching Python Programming to Novices: Addressing Misconceptions and Creating a Development Environment. Ph. D. Dissertation. ETH Zurich. https://doi.org/10.3929/ETHZ-A-010871088 Google ScholarCross Ref
- Herman Koppelman and Betsy van Dijk. 2010. Teaching Abstraction in Introductory Courses. In Proceedings of the Fifteenth Annual Conference on Innovation and Technology in Computer Science Education - ITiCSE ’10. ACM Press, Bilkent, Ankara, Turkey. 174. isbn:978-1-60558-729-5 https://doi.org/10.1145/1822090.1822140 Google ScholarDigital Library
- Teemu Lehtinen, Aleksi Lukkarinen, and Lassi Haaranen. 2021. Students Struggle to Explain Their Own Program Code. In Proceedings of the 26th ACM Conference on Innovation and Technology in Computer Science Education V. 1. 206–212. https://doi.org/10.1145/3430665.3456322 arxiv:2104.06710. Google ScholarDigital Library
- Aleksi Lukkarinen and Juha Sorva. 2016. Classifying the Tools of Contextualized Programming Education and Forms of Media Computation. In Proceedings of the 16th Koli Calling International Conference on Computing Education Research. ACM, Koli Finland. 51–60. isbn:978-1-4503-4770-9 https://doi.org/10.1145/2999541.2999551 Google ScholarDigital Library
- Linxiao Ma, John Ferguson, Marc Roper, and Murray Wood. 2007. Investigating the Viability of Mental Models Held by Novice Programmers. In Proceedings of the 38th SIGCSE Technical Symposium on Computer Science Education. ACM, Covington Kentucky USA. 499–503. isbn:978-1-59593-361-4 https://doi.org/10.1145/1227310.1227481 Google 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 (ITiCSE ’11). Association for Computing Machinery, New York, NY, USA. 168–172. isbn:978-1-4503-0697-3 https://doi.org/10.1145/1999747.1999796 Google ScholarDigital Library
- Bartosz Milewski. 2018. Category Theory for Programmers. Blurb. Google Scholar
- Craig S. Miller and Amber Settle. 2016. Some Trouble with Transparency: An Analysis of Student Errors with Object-oriented Python. In Proceedings of the 2016 ACM Conference on International Computing Education Research. ACM, Melbourne VIC Australia. 133–141. isbn:978-1-4503-4449-4 https://doi.org/10.1145/2960310.2960327 Google ScholarDigital Library
- Seymour A. Papert. 1971. A Computer Laboratory for Elementary Schools. MIT. Google Scholar
- Seymour A. Papert and Cynthia Solomon. 1971. Twenty Things To Do With A Computer. MIT. Google Scholar
- D. L. Parnas. 1972. On the Criteria to Be Used in Decomposing Systems into Modules. Commun. ACM, 15, 12 (1972), Dec., 1053–1058. issn:0001-0782 https://doi.org/10.1145/361598.361623 Google ScholarDigital Library
- Joe Gibbs Politz, Alejandro Martinez, Matthew Milano, Sumner Warren, Daniel Patterson, Junsong Li, Anand Chitipothu, and Shriram Krishnamurthi. 2013. Python: The Full Monty. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA ’13). ACM, New York, NY, USA. 217–232. isbn:978-1-4503-2374-1 https://doi.org/10.1145/2509136.2509536 Google ScholarDigital Library
- Yizhou Qian and James Lehman. 2017. Students’ Misconceptions and Other Difficulties in Introductory Programming: A Literature Review. ACM Transactions on Computing Education, 18, 1 (2017), Oct., 1–24. issn:19466226 https://doi.org/10.1145/3077618 Google ScholarDigital Library
- Eric Roberts and Keith Schwarz. 2013. A Portable Graphics Library for Introductory CS. In Proceedings of the 18th ACM Conference on Innovation and Technology in Computer Science Education - ITiCSE ’13. ACM Press, Canterbury, England, UK. 153. isbn:978-1-4503-2078-8 https://doi.org/10.1145/2462476.2465590 Google ScholarDigital Library
- Anthony Robins, Janet Rountree, and Nathan Rountree. 2003. Learning and Teaching Programming: A Review and Discussion. Computer Science Education, 13, 2 (2003), June, 137–172. issn:0899-3408, 1744-5175 https://doi.org/10.1076/csed.13.2.137.14200 Google ScholarCross Ref
- Emmanuel Schanzer, Shriram Krishnamurthi, and Kathi Fisler. 2018. Creativity, Customization, and Ownership: Game Design in Bootstrap: Algebra. In Proceedings of the 49th ACM Technical Symposium on Computer Science Education. ACM, Baltimore Maryland USA. 161–166. isbn:978-1-4503-5103-4 https://doi.org/10.1145/3159450.3159471 Google ScholarDigital Library
- Juha Sorva. 2023. Misconceptions and the Beginner Programmer. In Computer Science Education : Perspectives on Teaching and Learning in School (second ed.), Sue Sentance, Erik Barendsen, Nicol R. Howard, and Carsten Schulte (Eds.). Bloomsbury Academic, London. 259–273. isbn:978-1-350-29694-7 Google Scholar
- Wayne P. Stevens, Glenford J. Myers, and Larry L. Constantine. 1974. Structured Design. IBM Systems Journal, 13, 2 (1974), 115–139. Google ScholarDigital Library
- Vicki Trowler. 2010. Student Engagement Literature Review. The Higher Education Academy, York. Google Scholar
- Preston Tunnell Wilson, Kathi Fisler, and Shriram Krishnamurthi. 2018. Evaluating the Tracing of Recursion in the Substitution Notional Machine. In Proceedings of the 49th ACM Technical Symposium on Computer Science Education (SIGCSE ’18). ACM, New York, NY, USA. 1023–1028. isbn:978-1-4503-5103-4 https://doi.org/10.1145/3159450.3159479 Google ScholarDigital Library
- David Weintrop, Alexandria K. Hansen, Danielle B. Harlow, and Diana Franklin. 2018. Starting from Scratch: Outcomes of Early Computer Science Learning Experiences and Implications for What Comes Next. In Proceedings of the 2018 ACM Conference on International Computing Education Research. ACM, Espoo Finland. 142–150. isbn:978-1-4503-5628-2 https://doi.org/10.1145/3230977.3230988 Google ScholarDigital Library
- Jeannette M. Wing. 2006. Computational Thinking. Commun. ACM, 49, 3 (2006), March, 33–35. issn:0001-0782 https://doi.org/10.1145/1118178.1118215 Google ScholarDigital Library
- Brent A. Yorgey. 2012. Monoids: Theme and Variations (Functional Pearl). ACM SIGPLAN Notices, 47, 12 (2012), Sept., 105–116. issn:0362-1340 https://doi.org/10.1145/2430532.2364520 Google ScholarDigital Library
Index Terms
- Teaching Programming with Graphics: Pitfalls and a Solution
Recommendations
Decompose Graphics to Compose Programs in Python with PyTamaro
SIGCSE 2024: Proceedings of the 55th ACM Technical Symposium on Computer Science Education V. 2Programming is increasingly being taught in high schools and in non-CS majors at universities. However, the interests of this wide population are often different from those of students who decided to study computer science. Programming graphics is a ...
A study of the difficulties of novice programmers
ITiCSE '05: Proceedings of the 10th annual SIGCSE conference on Innovation and technology in computer science educationProgramming is related to several fields of technology, and many university students are studying the basics of it. Unfortunately, they often face difficulties already on the basic courses. This work studies the difficulties in learning programming in ...
Choosing a first programming language
SIGITE '10: Proceedings of the 2010 ACM conference on Information technology educationToday, among other challenges, teaching students how to write computer programs for the first time can be an important criterion for whether students in computing will remain in their program of study, i.e. Computer Science or Information Technology. ...
Comments