Provendo feedback estrutural sobre projetos de algoritmo no ensino da programação utilizando testes de design.

Detalhes bibliográficos
Ano de defesa: 2021
Autor(a) principal: OLIVEIRA, Caio Batista.
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Dissertação
Tipo de acesso: Acesso aberto
Idioma: por
Instituição de defesa: Universidade Federal de Campina Grande
Brasil
Centro de Engenharia Elétrica e Informática - CEEI
PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO
UFCG
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/23287
Resumo: As disciplinas introdutórias de programação normalmente possuem um grande número de estudantes matriculados por semestre, o que dificulta os professores a terem um contato individualizado para sanar dúvidas. Assim, a correção das atividades ocorre tipicamente por meio de ferramentas automáticas. No ensino da programação tanto a correção funcional como a correção da forma estrutural de uma solução algorítmica (projeto de algoritmo) são importantes. Existem diversas técnicas para a parte funcional, dentre as mais populares estão implementações de Juízes Online, entretanto não existem ferramentas amplamente difundidas que otimizem esta segunda correção. A área de estudo de técnicas para a verificação da parte de estrutura de dados e projeto é reduzida e sem grandes referências do estado da arte, deixando professores com poucos recursos e ferramentas que possam aplicar na correção da forma das soluções desenvolvidas pelos alunos. Assim, alunos podem desenvolver soluções estruturalmente incorretas, usando de funções ou estruturas de dados não permitidas, prejudicando o aprendizado da lógica de programação e limitando o contato de professores e alunos para resolução de dúvidas. Propomos neste trabalho uma abordagem de análise estática de código para detecção de problemas estruturais em projetos de algoritmo. O objetivo dessa abordagem é prover ao tutor uma forma de detectar um projeto de algoritmo, sem que seja necessário executar o algoritmo e o ajude a assegurar a estrutura do que está analisando, como o uso de funções proibidas e padrões específicos de codificação. Para isso, desenvolvemos uma ferramenta, Python Design Wizard, que fornece uma API, abstraída da AST de Python, possibilitando a criação de testes de design do código. A pesquisa conduzida neste mestrado envolve a validação da implementação, usabilidade e dos conceitos utilizados para construção da ferramenta. Esta validação é composta por duas partes, na primeira conduzimos uma avaliação quantitativa executando testes de design em 1714 programas de alunos de Programação I da Universidade Federal de Campina Grande, utilizando a ferramenta Python Design Wizard, para detecção de algoritmos de ordenação. Na segunda parte, utilizamos a mesma ferramenta e a técnica de Think Aloud Protocol para conduzir entrevistas com profissionais de educação e extrair informações se a solução proposta pode influenciar positivamente na aprendizagem da programação. Nossos resultados incluem uma ferramenta capaz de detectar algoritmos de ordenação, dentre algoritmos de alunos, no nosso estudo quantitativo e uma coletânea de frases com feedback positivo sobre o conceito de testes de design, comprovando a facilidade da compreensão dos testes implementados na ferramenta e sua utilidade na área de educação.