An Educational Resource to Develop the Skill of Perceiving Patterns of Misconception with Programming Learners

  • Gabriel Sílverson Gomes Federal University of Mato Grosso do Sul
  • Ygor Takashi Nishi Federal University of Mato Grosso do Sul
  • Paula Bosse Ramos Federal Institute of Mato Grosso do Sul
  • Leonardo Souza Silva Federal University of Mato Grosso do Sul
  • Eduardo Guerra Free University of Bolzen-Bolzano
  • Igor Scaliante Wiese Federal Technological University of Paraná
  • Yorah Bosse Federal University of Mato Grosso do Sul

Abstract


Programming learning is a complex task. There are students with problems understanding the concepts and others who understand but struggle to apply them. The difficulties, together with the lack of knowledge of the syntax of programming languages, cause learners to make mistakes when developing their code. Researchers analyzed and cataloged the programming errors most frequently committed by learners, the mistakes patterns. The presence of misunderstanding patterns can make learning more time-consuming, causing students to give up on the activity they are solving or even on the subject. In this context, the general goal of this work is to construct an educational resource to develop the ability to perceive patterns of mistakes with programming learners. We developed a set of objective questions in C and Python, addressing these mistakes patterns. Working with students, not only on what is correct but also on mistakes, will develop this skill that is so important for programmers, making them realize the errors in their codes and correcting them. In this study, we created 63 questions in C and 46 questions in Python that address 41 patterns of mistakes. These questions are available online, in different formats, for professors and learners to use during teaching and learning programming.
Keywords: Introductory Programming, CS1, Programming Learning, Patterns of Misconceptions, C, Python

References

Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid Fiksdahl-King, and Shlomo Angel. 1977. A pattern language.

Brett A Becker. 2019. A survey of introductory programming courses in Ireland. In Proceedings of the 2019 ACM Conference on Innovation and Technology in Computer Science Education. 58–64.

Jens Bennedsen and Michael E Caspersen. 2019. Failure rates in introductory programming: 12 years later. ACM Inroads 10, 2, 30–36.

Yorah Bosse. 2020. Padrões de dificuldades relacionadas com o aprendizado de programação. Ph.D. Dissertation. Universidade de São Paulo.

Yorah Bosse and Marco Aurelio Gerosa. 2015. Reprovações e trancamentos nas disciplinas de introdução à programação da Universidade de São Paulo: Um estudo preliminar. XXIII WEI - Workshop sobre Educação em Computação - Em: Anais do XXXV Congresso da Sociedade Brasileira de Computação, 1–10.

Yorah Bosse, Igor Scaliante Wiese, Marco Aurélio Graciotto Silva, Nelson Lago, Leônidas de Oliveira Brandão, David Redmiles, Fabio Kon, and Marco A Gerosa. 2021. Catalogs of C and Python Antipatterns by CS1 Students. arXiv preprint arXiv:2104.12542.

William H Brown, Raphael C Malveau, Hays W McCormick, and Thomas J Mowbray. 1998. AntiPatterns: refactoring software, architectures, and projects in crisis. John Wiley & Sons, Inc.

Bernardo Buchweitz. 1996. Elaboraçâo de questôes de múltipla escolha. Estudos em Avaliação Educacional 14, 83–104.

Ricardo Caceffo, Breno de França, Guilherme Gama, Raysa Benatti, Tales Aparecida, Tania Caldas, and Rodolfo Azevedo. 2017. An Antipattern documentation about misconceptions related to an introductory programming course in C. In Technical Report 17-15. Institute of Computing, University of Campinas, 42.

Stephen Cooper, Wanda Dann, Randy Pausch, and Randy Pausch. 2003. Teaching objects-first in introductory Computer Science. ACM SIGCSE Bulletin 35, 1, 191–195.

Edsger W Dijkstra et al. 1989. On the cruelty of really teaching Computing Science. Commun. ACM 32, 12, 1398–1404.

Rachel D’souza, Mahima Bhayana, Marzieh Ahmadzadeh, and Brian Harrington. 2019. A Mixed-Methods Study of Novice Programmer Interaction with Python Error Messages. In Proceedings of the Western Canadian Conference on Computing Education. ACM, 15.

Per-Erik Ellström. 2001. Integrating learning and work: Problems and prospects. Human resource development quarterly 12, 4, 421–435.

Gerhard Fischer and Elisa Giaccardi. 2006. Meta-design: A framework for the future of end-user development. In End user development. Springer, 427–457.

Sandy Garner, Patricia Haden, and Anthony Robins. 2005. My program is correct but it doesn’t run: a preliminary investigation of novice programmers’ problems. In Proceedings of the 7th Australasian conference on Computing education-Volume 42. Australian Computer Society, Inc., 173–180.

Anabela Gomes and Antonio Mendes. 2014. A teacher’s view about introductory programming teaching and learning: Difficulties, strategies and motivations. In 2014 IEEE Frontiers in Education Conference (FIE) Proceedings. IEEE, 1–8.

Christian Harteis, Johannes Bauer, and Hans Gruber. 2008. The culture of learning from mistakes: How employees handle mistakes in everyday work. International Journal of Educational Research 47, 4, 223–231.

Juha Helminen and Lauri Malmi. 2010. Jype-a program visualization and programming exercise tool for Python. In Proceedings of the 5th international symposium on Software visualization. ACM, 153–162.

Maria Hristova, Ananya Misra, Megan Rutter, and Rebecca Mercuri. 2003. Identifying and correcting Java programming errors for introductory computer science students. ACM SIGCSE Bulletin 35, 1, 153–156.

Tony Jenkins. 2002. On the difficulty of learning to program. In Proceedings of the 3rd Annual Conference of the LTSN Centre for Information and Computer Sciences, Vol. 4. Citeseer, 53–58.

AM Kristi. 2003. Problems in learning and teaching programming-a literature study for developing visualizations in the Codewitz-Minerva Project. Codewitz Need Analysis, Institute of Software System, Tampere University of Technology, Finland, 1–12.

Cínthia Costa Kulpa, Eluza Toledo Pinheiro, and Régio Pierre da Silva. 2011. A influência das cores na usabilidade de interfaces através do design centrado no comportamento cultural do usuário. perspectivas em Gestão & Conhecimento 1, 1, 119–136.

Essi Lahtinen, Kirsti Ala-Mutka, and Hannu-Matti Järvinen. 2005. A study of the difficulties of novice programmers. ACM SIGCSE Bulletin 37, 3, 14–18.

Orni Meerbaum-Salant, Michal Armoni, and Mordechai Ben-Ari. 2013. Learning Computer Science concepts with Scratch. Computer Science Education 23, 3, 239–264.

CS De Menezes and Isaura Alcina Martins Nobre. 2002. Um ambiente cooperativo para apoio a cursos de introdução a programação. In Congresso da Sociedade Brasileira de Computação, Vol. 22.

Mahmoud M Mhashi and ALIM Alakeel. 2013. Difficulties facing students in learning computer programming skills at Tabuk University. In Proceedings of the 12th International Conference on Education and Educational Technology (EDU’13), Iwate, Japan. 15–24.

Jerónimo Nunes. 2015. A importância da programação informática: benefícios da aprendizagem e mais-valias competitivas. Correio dos Açores, 15–15.

Alexandra Okada, Lynn Alves, and Daniela Barros. 2009. Moodle-estratégias pedagógicas e estudos de caso.

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 ACM SIGCSE Bulletin, Vol. 39. ACM, 204–223.

Martinha Piteira and Carlos Costa. 2013. Learning computer programming: Study of difficulties in learning programming. In Proceedings of the 2013 International Conference on Information Systems and Design of Communication. ACM, 75–80.

Anthony Robins, Janet Rountree, and Nathan Rountree. 2003. Learning and teaching programming: A review and discussion. Computer science education 13, 2, 137–172.

Pranay Kumar Sevella. 2013. Determining the barriers faced by novice programmers. Texas A&M University-Kingsville.

Observatório Softex. 2009. Software e serviços de TI: a indústria brasileira em perspectiva. Campinas:[sn].

Renan Souza, Ricardo Caceffo, Pablo Frank-Bolton, and Rodolfo Azevedo. 2018. An antipattern documentation about possible misconceptions related to introductory programming courses (CS1) in JAVA. Technical Report. Technical Report IC-18–20. Institute of Computing, University of Campinas . . . .

JN Streumer and M Kho. 2006. The world of work-related learning. In Workrelated learning. Springer, 3–49.

Phit-Huan Tan, Choo-Yee Ting, and Siew-Woei Ling. 2009. Learning difficulties in programming courses: undergraduates’ perspective and perception. In 2009 International Conference on Computer Technology and Development, Vol. 1. IEEE, 42–46.

Christopher Watson and Frederick WB Li. 2014. Failure rates in introductory programming revisited. In Proceedings of the 2014 conference on Innovation & technology in computer science education. ACM, 39–44.
Published
2023-04-24
GOMES, Gabriel Sílverson; NISHI, Ygor Takashi; RAMOS, Paula Bosse; SILVA, Leonardo Souza; GUERRA, Eduardo; WIESE, Igor Scaliante; BOSSE, Yorah. An Educational Resource to Develop the Skill of Perceiving Patterns of Misconception with Programming Learners. In: BRAZILIAN SYMPOSIUM ON COMPUTING EDUCATION (EDUCOMP), 3. , 2023, Evento Online. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2023 . p. 328-336. DOI: https://doi.org/10.5753/educomp.2023.228330.