ABSTRACT
Various tools and approaches are available to support undergraduate students learning to program. Most of them concentrate on the code and aim to ease the visualization of data structures or guide the debugging. However, in undergraduate introductory courses, students are typically given exercises in the form of a natural language problem. Deriving a correct solution largely depends on the problem-solving strategy they adopt rather than on their proficiency in dealing with the syntax and semantics of the code. Indeed, they face various challenges (apart from the coding), such as identifying the relevant information, stating the algorithmic steps to solve it, breaking it into smaller parts, and evaluating the implemented solution. To our knowledge, almost no attention has been paid to supporting such problem-solving strategies before and during the coding. This paper reports an interview and a sketching exercise with 10 participants exploring how the novices approach the programming exercises from a problem-solving perspective and how they imagine a tool to support their cognitive process. Findings show that students intuitively perform various actions over the exercise text, and they would appreciate having support from the development environment. Accordingly, based on these findings, we provide implications for designing tools to support problem-solving strategies.
- M. Adeli, N. Nelson, S. Chattopadhyay, H. Coffey, A. Henley, and A. Sarma. 2020. Supporting Code Comprehension via Annotations: Right Information at the Right Time and Place. In 2020 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). 1–10. https://doi.org/10.1109/VL/HCC50065.2020.9127264Google ScholarCross Ref
- Umair Z. Ahmed, Nisheeth Srivastava, Renuka Sindhgatta, and Amey Karkare. 2020. Characterizing the Pedagogical Benefits of Adaptive Feedback for Compilation Errors by Novice Programmers. In Proceedings of the ACM/IEEE 42nd International Conference on Software Engineering: Software Engineering Education and Training (Seoul, South Korea) (ICSE-SEET ’20). Association for Computing Machinery, New York, NY, USA, 139–150. https://doi.org/10.1145/3377814.3381703Google ScholarDigital Library
- Valerie Barr and Chris Stephenson. 2011. Bringing Computational Thinking to K-12: What is Involved and What is the Role of the Computer Science Education Community?ACM Inroads 2, 1 (feb 2011), 48–54. https://doi.org/10.1145/1929887.1929905Google ScholarDigital Library
- Brett A. Becker. 2016. An Effective Approach to Enhancing Compiler Error Messages. In Proceedings of the 47th ACM Technical Symposium on Computing Science Education (Memphis, Tennessee, USA) (SIGCSE ’16). Association for Computing Machinery, New York, NY, USA, 126–131. https://doi.org/10.1145/2839509.2844584Google ScholarDigital Library
- Virginia Braun and Victoria Clarke. 2006. Using thematic analysis in psychology. Qualitative Research in Psychology 3, 2 (2006), 77–101. https://doi.org/10.1191/1478088706qp063oaGoogle ScholarCross Ref
- Angela Carbone, John Hurst, Ian Mitchell, and Dick Gunstone. 2009. An Exploration of Internal Factors Influencing Student Learning of Programming. In Proceedings of the Eleventh Australasian Conference on Computing Education - Volume 95(Wellington, New Zealand) (ACE ’09). Australian Computer Society, Inc., AUS, 25–34.Google Scholar
- Paul Denny, James Prather, Brett A. Becker, Catherine Mooney, John Homer, Zachary C Albrecht, and Garrett B. Powell. 2021. On Designing Programming Error Messages for Novices: Readability and Its Constituent Factors. Association for Computing Machinery, New York, NY, USA.Google ScholarDigital Library
- Alireza Ebrahimi. 1994. Novice programmer errors: language constructs and plan composition. International Journal of Human-Computer Studies 41, 4 (1994), 457–480. https://doi.org/10.1006/ijhc.1994.1069Google ScholarDigital Library
- Jamie Gorson and Eleanor O’Rourke. 2019. How Do Students Talk About Intelligence? An Investigation of Motivation, Self-Efficacy, and Mindsets in Computer Science. In Proceedings of the 2019 ACM Conference on International Computing Education Research (Toronto ON, Canada) (ICER ’19). Association for Computing Machinery, New York, NY, USA, 21–29. https://doi.org/10.1145/3291279.3339413Google ScholarDigital Library
- Shuchi Grover and Roy Pea. 2013. Computational Thinking in K–12: A Review of the State of the Field. Educational Researcher 42, 1 (2013), 38–43. https://doi.org/10.3102/0013189X12463051Google ScholarCross Ref
- Hyeonsu Kang and Philip J. Guo. 2017. Omnicode: A Novice-Oriented Live Programming Environment with Always-On Run-Time Value Visualizations. In Proceedings of the 30th Annual ACM Symposium on User Interface Software and Technology (Québec City, QC, Canada) (UIST ’17). Association for Computing Machinery, New York, NY, USA, 737–745. https://doi.org/10.1145/3126594.3126632Google ScholarDigital Library
- Hieke Keuning, Johan Jeuring, and Bastiaan Heeren. 2018. A Systematic Literature Review of Automated Feedback Generation for Programming Exercises. ACM Trans. Comput. Educ. 19, 1, Article 3 (Sept. 2018), 43 pages. https://doi.org/10.1145/3231711Google ScholarDigital Library
- Essi Lahtinen, Kirsti Ala-Mutka, and Hannu-Matti Järvinen. 2005. A Study of the Difficulties of Novice Programmers. In Proceedings of the 10th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education (Caparica, Portugal) (ITiCSE ’05). Association for Computing Machinery, New York, NY, USA, 14–18. https://doi.org/10.1145/1067445.1067453Google ScholarDigital Library
- Rina P. Y. Lai. 2021. Beyond Programming: A Computer-Based Assessment of Computational Thinking Competency. ACM Trans. Comput. Educ. 22, 2, Article 14 (nov 2021), 27 pages. https://doi.org/10.1145/3486598Google ScholarDigital Library
- Raymond Lister, Beth Simon, Errol Thompson, Jacqueline L. Whalley, and Christine Prasad. 2006. Not Seeing the Forest for the Trees: Novice Programmers and the SOLO Taxonomy. In Proceedings of the 11th Annual SIGCSE Conference on Innovation and Technology in Computer Science Education (Bologna, Italy) (ITICSE ’06). Association for Computing Machinery, New York, NY, USA, 118–122. https://doi.org/10.1145/1140124.1140157Google ScholarDigital Library
- Dastyni Loksa and Andrew J. Ko. 2016. The Role of Self-Regulation in Programming Problem Solving Process and Success. In Proceedings of the 2016 ACM Conference on International Computing Education Research(Melbourne, VIC, Australia) (ICER ’16). Association for Computing Machinery, New York, NY, USA, 83–91. https://doi.org/10.1145/2960310.2960334Google ScholarDigital Library
- Dastyni Loksa, Andrew J. Ko, Will Jernigan, Alannah Oleson, Christopher J. Mendez, and Margaret M. Burnett. 2016. Programming, Problem Solving, and Self-Awareness: Effects of Explicit Guidance. In Proceedings of the 2016 CHI Conference on Human Factors in Computing Systems (San Jose, California, USA) (CHI ’16). Association for Computing Machinery, New York, NY, USA, 1449–1461. https://doi.org/10.1145/2858036.2858252Google ScholarDigital Library
- Andrew Luxton-Reilly, Simon, Ibrahim Albluwi, Brett A. Becker, Michail Giannakos, Amruth N. Kumar, Linda Ott, James Paterson, Michael James Scott, Judy Sheard, and Claudia Szabo. 2018. Introductory Programming: A Systematic Literature Review. In Proceedings Companion of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science Education (Larnaca, Cyprus) (ITiCSE 2018 Companion). Association for Computing Machinery, New York, NY, USA, 55–106. https://doi.org/10.1145/3293881.3295779Google ScholarDigital Library
- Monica M. McGill and Adrienne Decker. 2020. Construction of a Taxonomy for Tools, Languages, and Environments across Computing Education. In Proceedings of the 2020 ACM Conference on International Computing Education Research (Virtual Event, New Zealand) (ICER ’20). Association for Computing Machinery, New York, NY, USA, 124–135. https://doi.org/10.1145/3372782.3406258Google Scholar
- Rodrigo Pessoa Medeiros, Geber Lisboa Ramalho, and Taciana Pontual Falcão. 2019. A Systematic Literature Review on Teaching and Learning Introductory Programming in Higher Education. IEEE Transactions on Education 62, 2 (2019), 77–90. https://doi.org/10.1109/TE.2018.2864133Google ScholarDigital Library
- Arnold Pears, Stephen Seidman, Lauri Malmi, Linda Mannila, Elizabeth Adams, Jens Bennedsen, Marie Devlin, and James Paterson. 2007. A Survey of Literature on the Teaching of Introductory Programming. In Working Group Reports on ITiCSE on Innovation and Technology in Computer Science Education(Dundee, Scotland) (ITiCSE-WGR ’07). Association for Computing Machinery, New York, NY, USA, 204–223. https://doi.org/10.1145/1345443.1345441Google Scholar
- James Prather, Raymond Pettit, Brett A. Becker, Paul Denny, Dastyni Loksa, Alani Peters, Zachary Albrecht, and Krista Masci. 2019. First Things First: Providing Metacognitive Scaffolding for Interpreting Problem Prompts. 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, 531–537. https://doi.org/10.1145/3287324.3287374Google ScholarDigital Library
- Yizhou Qian and James Lehman. 2017. Students’ Misconceptions and Other Difficulties in Introductory Programming: A Literature Review. ACM Trans. Comput. Educ. 18, 1, Article 1 (Oct. 2017), 24 pages. https://doi.org/10.1145/3077618Google ScholarDigital Library
- Jonathan C. Roberts, Panagiotis D. Ritsos, James R. Jackson, and Christopher Headleand. 2018. The Explanatory Visualization Framework: An Active Learning Framework for Teaching Creative Computing Using Explanatory Visualizations. IEEE Transactions on Visualization and Computer Graphics 24, 1(2018), 791–801. https://doi.org/10.1109/TVCG.2017.2745878Google ScholarCross Ref
- Anthony Robins, Janet Rountree, and Nathan Rountree. 2003. Learning and Teaching Programming: A Review and Discussion. Computer Science Education 13, 2 (2003), 137–172. https://doi.org/10.1076/csed.13.2.137.14200 arXiv:https://doi.org/10.1076/csed.13.2.137.14200Google ScholarCross Ref
- Neil Smith, Mike Richards, and Daniel G. Cabrero. 2018. Summer of Code: Assisting Distance-Learning Students with Open-Ended Programming Tasks. In Proceedings of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science Education (Larnaca, Cyprus) (ITiCSE 2018). Association for Computing Machinery, New York, NY, USA, 224–229. https://doi.org/10.1145/3197091.3197119Google ScholarDigital Library
- Juha Sorva, Ville Karavirta, and Lauri Malmi. 2013. A Review of Generic Program Visualization Systems for Introductory Programming Education. ACM Trans. Comput. Educ. 13, 4, Article 15 (Nov. 2013), 64 pages. https://doi.org/10.1145/2490822Google ScholarDigital Library
- J. Ángel Velázquez-Iturbide, Isidoro Hernán-Losada, and Maximiliano Paredes-Velasco. 2017. Evaluating the Effect of Program Visualization on Student Motivation. IEEE Transactions on Education 60, 3 (2017), 238–245. https://doi.org/10.1109/TE.2017.2648781Google ScholarDigital Library
- Mauricio Verano Merino and Tijs van der Storm. 2020. Block-Based Syntax from Context-Free Grammars. In Proceedings of the 13th ACM SIGPLAN International Conference on Software Language Engineering (Virtual, USA) (SLE 2020). Association for Computing Machinery, New York, NY, USA, 283–295. https://doi.org/10.1145/3426425.3426948Google ScholarDigital Library
- Jeannette M. Wing. 2006. Computational Thinking. Commun. ACM 49, 3 (mar 2006), 33–35. https://doi.org/10.1145/1118178.1118215Google ScholarDigital Library
Index Terms
- On How Novices Approach Programming Exercises Before and During Coding
Recommendations
Use of problem-solving approach to teach scratch programming for adult novice programmers (abstract only)
SIGCSE '14: Proceedings of the 45th ACM technical symposium on Computer science educationNovice programmers usually fail to combine abstract concepts and knowledge into program design, even though they know the syntax and semantics of individual statement. Adult novice programmers with little computer background knowledge might face more ...
What Is Object-Oriented Programming?
The meaning of the term 'object oriented' is examined in the context of the general-purpose programming language C++. This choice is made partly to introduce C++ and partly because C++ is one of the few languages that supports data abstraction, object-...
Comments