Padrões de dificuldades relacionadas com o aprendizado de programação

Detalhes bibliográficos
Autor(a) principal: Bosse, Yorah
Data de Publicação: 2020
Tipo de documento: Tese
Idioma: por
Título da fonte: Biblioteca Digital de Teses e Dissertações da USP
Texto Completo: https://www.teses.usp.br/teses/disponiveis/45/45134/tde-14072020-172808/
Resumo: 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.
id USP_dc75adab99bb98174a960b84f8b4ec68
oai_identifier_str oai:teses.usp.br:tde-14072020-172808
network_acronym_str USP
network_name_str Biblioteca Digital de Teses e Dissertações da USP
repository_id_str 2721
spelling Padrões de dificuldades relacionadas com o aprendizado de programaçãoPatterns of difficulties related to programming learningAntipadrõesAntipatternsAprendizado de programaçãoCCCS1CS1DificuldadeMisconceptionsProgramming learningPythonPythonAprender 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.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.Biblioteca Digitais de Teses e Dissertações da USPGerosa, Marco AurélioBosse, Yorah2020-06-15info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/doctoralThesisapplication/pdfhttps://www.teses.usp.br/teses/disponiveis/45/45134/tde-14072020-172808/reponame:Biblioteca Digital de Teses e Dissertações da USPinstname:Universidade de São Paulo (USP)instacron:USPLiberar o conteúdo para acesso público.info:eu-repo/semantics/openAccesspor2021-02-08T18:39:01Zoai:teses.usp.br:tde-14072020-172808Biblioteca Digital de Teses e Dissertaçõeshttp://www.teses.usp.br/PUBhttp://www.teses.usp.br/cgi-bin/mtd2br.plvirginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.bropendoar:27212021-02-08T18:39:01Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP)false
dc.title.none.fl_str_mv Padrões de dificuldades relacionadas com o aprendizado de programação
Patterns of difficulties related to programming learning
title Padrões de dificuldades relacionadas com o aprendizado de programação
spellingShingle Padrões de dificuldades relacionadas com o aprendizado de programação
Bosse, Yorah
Antipadrões
Antipatterns
Aprendizado de programação
C
C
CS1
CS1
Dificuldade
Misconceptions
Programming learning
Python
Python
title_short Padrões de dificuldades relacionadas com o aprendizado de programação
title_full Padrões de dificuldades relacionadas com o aprendizado de programação
title_fullStr Padrões de dificuldades relacionadas com o aprendizado de programação
title_full_unstemmed Padrões de dificuldades relacionadas com o aprendizado de programação
title_sort Padrões de dificuldades relacionadas com o aprendizado de programação
author Bosse, Yorah
author_facet Bosse, Yorah
author_role author
dc.contributor.none.fl_str_mv Gerosa, Marco Aurélio
dc.contributor.author.fl_str_mv Bosse, Yorah
dc.subject.por.fl_str_mv Antipadrões
Antipatterns
Aprendizado de programação
C
C
CS1
CS1
Dificuldade
Misconceptions
Programming learning
Python
Python
topic Antipadrões
Antipatterns
Aprendizado de programação
C
C
CS1
CS1
Dificuldade
Misconceptions
Programming learning
Python
Python
description 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.
publishDate 2020
dc.date.none.fl_str_mv 2020-06-15
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/doctoralThesis
format doctoralThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv https://www.teses.usp.br/teses/disponiveis/45/45134/tde-14072020-172808/
url https://www.teses.usp.br/teses/disponiveis/45/45134/tde-14072020-172808/
dc.language.iso.fl_str_mv por
language por
dc.relation.none.fl_str_mv
dc.rights.driver.fl_str_mv Liberar o conteúdo para acesso público.
info:eu-repo/semantics/openAccess
rights_invalid_str_mv Liberar o conteúdo para acesso público.
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.coverage.none.fl_str_mv
dc.publisher.none.fl_str_mv Biblioteca Digitais de Teses e Dissertações da USP
publisher.none.fl_str_mv Biblioteca Digitais de Teses e Dissertações da USP
dc.source.none.fl_str_mv
reponame:Biblioteca Digital de Teses e Dissertações da USP
instname:Universidade de São Paulo (USP)
instacron:USP
instname_str Universidade de São Paulo (USP)
instacron_str USP
institution USP
reponame_str Biblioteca Digital de Teses e Dissertações da USP
collection Biblioteca Digital de Teses e Dissertações da USP
repository.name.fl_str_mv Biblioteca Digital de Teses e Dissertações da USP - Universidade de São Paulo (USP)
repository.mail.fl_str_mv virginia@if.usp.br|| atendimento@aguia.usp.br||virginia@if.usp.br
_version_ 1815256967994671104