Um Recurso Educacional para Desenvolver a Habilidade da Percepção de Padrões de Equívocos com Aprendizes de Programação

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

Resumo


A aprendizagem de programação é vista como uma tarefa complexa, onde existem alunos com dificuldades em entender os conceitos, e outros que entendem mas possuem dificuldades em aplicá-los. As dificuldades juntamente com o desconhecimento da sintaxe das linguagens de programação, fazem com que aprendizes cometam erros durante o desenvolvimento de seus códigos. Pesquisadores analisaram e catalogaram os erros de programação mais frequentemente cometidos pelos aprendizes, os padrões de equívocos. A presença de padrões de equívocos podem tornar o aprendizado mais demorado, fazendo com que os alunos desistam da atividade que estão resolvendo ou até mesmo da disciplina. Nesse contexto, o objetivo geral deste trabalho é a construção de recurso educacional para desenvolver a habilidade da percepção de padrões de equívocos com aprendizes de programação, onde foi desenvolvido um conjunto de questões objetivas que abordam padrões de equívocos cometidos em C e em Python. Trabalhar com os alunos não só o que é correto, mas também os equívocos, poderá desenvolver essa habilidade tão importante para programadores, fazendo-os perceber os erros nos seus códigos, assim como corrigí-los. Neste estudo foram desenvolvidas 63 questões para trabalhar padrões de equívocos cometidos em C e 46 questões para Python. Essas questões estão disponíveis online, em diversos formatos, para professores e aprendizes utilizarem durante o ensino aprendizagem de programação.
Palavras-chave: Programação Introdutória, CS1, Aprendizado de Programação, Padrões de Equívocos, C, Python

Referências

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.
Publicado
24/04/2023
GOMES, Gabriel Sílverson; NISHI, Ygor Takashi; RAMOS, Paula Bosse; SILVA, Leonardo Souza; GUERRA, Eduardo; WIESE, Igor Scaliante; BOSSE, Yorah. Um Recurso Educacional para Desenvolver a Habilidade da Percepção de Padrões de Equívocos com Aprendizes de Programação. In: SIMPÓSIO BRASILEIRO DE EDUCAÇÃO EM COMPUTAÇÃO (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.