• JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
  • JoomlaWorks Simple Image Rotator
 
  Bookmark and Share
 
 
Tesis Doctoral
DOI
https://doi.org/10.11606/T.45.2020.tde-14072020-172808
Documento
Autor
Nombre completo
Yorah Bosse
Dirección Electrónica
Instituto/Escuela/Facultad
Área de Conocimiento
Fecha de Defensa
Publicación
São Paulo, 2020
Director
Tribunal
Gerosa, Marco Aurélio (Presidente)
Barbosa, Ellen Francine
Bittencourt, Roberto Almeida
Caceffo, Ricardo Edgard
Kon, Fabio
Título en portugués
Padrões de dificuldades relacionadas com o aprendizado de programação
Palabras clave en portugués
Antipadrões
Aprendizado de programação
C
CS1
Dificuldade
Python
Resumen en portugués
Aprender a programar é uma tarefa árdua. Muitos erros são cometidos durante o desenvolvimento de código e aprender com esses erros pode ajudar a evitá-los. Apesar da quantidade considerável de pesquisas sobre esse tema, os professores têm pouco suporte para entender as dificuldades dos alunos. Perante esse cenário, o principal objetivo desta tese é identificar padrões de dificuldades enfrentadas pelos alunos durante o aprendizado de programação. Para realização da pesquisa, trabalhamos com dados de estudantes e professores de disciplinas de introdução à programação de cursos de graduação da USP. A pesquisa foi elaborada em três fases: primeiramente, analisamos dados para avaliar as taxas de insucesso do ensino introdutório de programação na universidade; em seguida, verificamos com alunos, através de diários de estudos, e professores, através de entrevistas semiestruturadas, o que eles entendem como sendo os problemas no ensino e aprendizagem de programação; e, por último, buscamos nos códigos de exercícios desenvolvidos por alunos durante seus cursos evidências sobre as dificuldades encontradas. Com essa última fase, catalogamos os resultados e os validamos através de um questionário com professores brasileiros com experiência no ensino desse conteúdo. Os dados coletados foram examinados utilizando-se de análise quanti e qualitativa. A análise de ~19.500 matrículas, nos possibilitou verificar que ~30% dos alunos matriculados em disciplinas de introdução à programação, no período analisado, não foram aprovados, ou seja, ~1.100 alunos por ano. Possibilitou ainda que fossem criadas listas das dificuldades citadas nos diários e entrevistas. Essas listas foram organizadas por conteúdo e por linguagem de programação (C e Python). Além disso, percebemos nesses dados ligações entre os conteúdos e, com isso, criamos um conjunto de conexões entre tópicos, mostrando a existência de pré-requisitos entre eles. Depois, analisando a evolução no desenvolvimento dos códigos dos estudantes, tivemos a oportunidade de identificar 139 tipos de equívocos cometidos utilizando-se as linguagens C e Python. Os equívocos que eram recorrentes foram considerados antipadrões (soluções comuns, porém com consequências negativas) e agrupados em catálogos. No total, foram criados 3 catálogos: um com antipadrões encontrados nos códigos desenvolvidos em C (21 equívocos), outro em Python (11 equívocos) e o último com a intersecção dos dois, totalizando 9 antipadrões encontrados tanto em C como em Python. Os antipadrões e os catálogos foram avaliados através de uma pesquisa de questionário respondida por 43 professores. Em geral, os professores conheciam os antipadrões apresentados. Além do mais, eles consideraram os catálogos fáceis para usar (~76%) e úteis (~81%); 53% mostraram ter intenção de usá-los regularmente nas suas aulas. Esperamos que os materiais gerados nesta tese possam ajudar professores no planejamento de suas aulas e pesquisadores a desenvolverem novas ferramentas e darem novos passos rumo ao aprimoramento do ensino e aprendizagem de programação.
Título en inglés
Patterns of difficulties related to programming learning
Palabras clave en inglés
Antipatterns
C
CS1
Misconceptions
Programming learning
Python
Resumen en inglés
Learning to program is a complex and arduous task. Many mistakes are made during code development, and learning from those mistakes could be a way to avoid them. Despite the considerable amount of research on this topic, professors have support to understand students' difficulties. In this context, the main goal of this thesis is to identify patterns of difficulties faced by students while learning how to program. This research deals with data from students and instructors from introductory programming disciplines of undergraduate courses at USP. The research was developed in three phases: first, we analyzed data to assess the actual grades and failure rates of the university's introductory programming courses; then, we checked with students, through study diaries, and instructors, through semi-structured interviews, what they understand to be the problems in teaching and learning programming; and, lastly, we searched the exercise code developed by students during their courses for evidences of the difficulties encountered. Based on this last phase, we cataloged the results and validated them through a survey with Brazilian professors with experience in teaching this content. The collected data was examined using quantitative and qualitative analysis. The analysis of ~19,500 enrollments allowed us to verify that ~30% of students enrolled in introductory programming courses, in the analyzed period, were not approved, i.e., ~1,100 students per year. It also allowed the creation of lists of difficulties mentioned in the diaries and interviews. These lists were organized by content and programming language (C and Python). We also observed in this data connections among topics, which enabled us to create a set of such connections, showing the existence of prerequisites between them. In addition, analyzing the evolution in the development of student code, we identified 139 types of mistakes made using C and Python. Recurring mistakes were considered antipatterns (common solutions, but with negative consequences) and grouped into catalogs. In total, 3 catalogs were created: one with antipatterns found in code developed in C (21 mistakes), another in Python (11) and the last with the intersection of the two, totaling 9 antipatterns found both in C and Python. The antipatterns and the catalogs were evaluated through a survey answered by 43 professors. In general, the respondents knew the antipatterns. In addition, they found the catalogs easy to use (~76%) and useful (~81%); 53% have shown the intention to use them regularly in their classes. We hope that the results of this thesis help professors in planning their classes and researchers in developing new tools, taking new steps towards improving teaching and learning introductory programming courses.
 
ADVERTENCIA - La consulta de este documento queda condicionada a la aceptación de las siguientes condiciones de uso:
Este documento es únicamente para usos privados enmarcados en actividades de investigación y docencia. No se autoriza su reproducción con finalidades de lucro. Esta reserva de derechos afecta tanto los datos del documento como a sus contenidos. En la utilización o cita de partes del documento es obligado indicar el nombre de la persona autora.
Tese_Yorah_Bosse.pdf (14.60 Mbytes)
Fecha de Publicación
2021-02-08
 
ADVERTENCIA: Aprenda que son los trabajos derivados haciendo clic aquí.
Todos los derechos de la tesis/disertación pertenecen a los autores
CeTI-SC/STI
Biblioteca Digital de Tesis y Disertaciones de la USP. Copyright © 2001-2024. Todos los derechos reservados.