Padrões de dificuldades relacionadas com o aprendizado de programação
Autor(a) principal: | |
---|---|
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 |