• 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
 
 
Thèse de Doctorat
DOI
https://doi.org/10.11606/T.45.2020.tde-14072020-172808
Document
Auteur
Nom complet
Yorah Bosse
Adresse Mail
Unité de l'USP
Domain de Connaissance
Date de Soutenance
Editeur
São Paulo, 2020
Directeur
Jury
Gerosa, Marco Aurélio (Président)
Barbosa, Ellen Francine
Bittencourt, Roberto Almeida
Caceffo, Ricardo Edgard
Kon, Fabio
Titre en portugais
Padrões de dificuldades relacionadas com o aprendizado de programação
Mots-clés en portugais
Antipadrões
Aprendizado de programação
C
CS1
Dificuldade
Python
Resumé en portugais
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.
Titre en anglais
Patterns of difficulties related to programming learning
Mots-clés en anglais
Antipatterns
C
CS1
Misconceptions
Programming learning
Python
Resumé en anglais
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.
 
AVERTISSEMENT - Regarde ce document est soumise à votre acceptation des conditions d'utilisation suivantes:
Ce document est uniquement à des fins privées pour la recherche et l'enseignement. Reproduction à des fins commerciales est interdite. Cette droits couvrent l'ensemble des données sur ce document ainsi que son contenu. Toute utilisation ou de copie de ce document, en totalité ou en partie, doit inclure le nom de l'auteur.
Tese_Yorah_Bosse.pdf (14.60 Mbytes)
Date de Publication
2021-02-08
 
AVERTISSEMENT: Apprenez ce que sont des œvres dérivées cliquant ici.
Tous droits de la thèse/dissertation appartiennent aux auteurs
CeTI-SC/STI
Bibliothèque Numérique de Thèses et Mémoires de l'USP. Copyright © 2001-2024. Tous droits réservés.