DSpace/Manakin Repository

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

Mostrar registro simples

dc.creator.ID OLIVEIRA, C. B. pt_BR
dc.creator.Lattes http://lattes.cnpq.br/3972104900612369 pt_BR
dc.contributor.advisor1 MONTEIRO, João Arthur Brunet.
dc.contributor.advisor1ID BRUNET, J. A. M. pt_BR
dc.contributor.advisor1Lattes http://lattes.cnpq.br/7892247821251194 pt_BR
dc.contributor.referee1 ANDRADE, Wilkerson de Lucena.
dc.contributor.referee2 MASSONI, Tiago Lima.
dc.contributor.referee3 AGUIAR, Yuska Paola Costa.
dc.description.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. pt_BR
dc.publisher.country Brasil pt_BR
dc.publisher.department Centro de Engenharia Elétrica e Informática - CEEI pt_BR
dc.publisher.program PÓS-GRADUAÇÃO EM CIÊNCIA DA COMPUTAÇÃO pt_BR
dc.publisher.initials UFCG pt_BR
dc.subject.cnpq Ciência da Computação pt_BR
dc.title Provendo feedback estrutural sobre projetos de algoritmo no ensino da programação utilizando testes de design. pt_BR
dc.date.issued 2021-12-10
dc.description.abstract Introductory programming courses usually have a large number of students enrolled per semester, which makes it difficult for teachers to have individual contact to answer questions. Thus, exercises correction typically occurs through automatic tools. In teaching programming both the functional correction and the correction of the structural form of an algorithmic solution (algorithm design) are important. There are several techniques for the functional part, among the most popular are Online Judges implementations, however there are no widely used tools that optimize this second correction. The area of study of techniques for verifying data structure and design is reduced and without major standart references, leaving teachers with few resources and tools that they can apply to correct the form of the solutions developed by the students. Thus, students can develop structurally incorrect solutions, using functions or data structures that are not allowed, impairing the learning of programming logic and limiting the contact of teachers and students to solve doubts. In this work, we propose a static code analysis approach to detect structural problems in algorithm designs. The goal of this research is to provide the tutor a way to detect an algorithm design without having to execute the algorithm and help him to ensure the integrity of the code structure, such as the use of prohibited functions and specific coding patterns. In order to do that, we developed a tool, Python Design Wizard, which provides us an API, abstracted from Python’s AST, enabling the creation of code design tests. The research conducted in this Masters involves the validation of the implementation, usability and concepts used to build the tool. This validation is composed of two parts, the first one we conducted a quantitative evaluation running design tests in 1714 Programing I student programs at the Federal University of Campina Grande, using the Python Design Wizard, in order to detect sorting algorithms. In the second part, we use the same tool and the Think Aloud Protocol technique to conduct interviews with education professionals and extract information on whether the proposed solution can positively influence programming learning. Our results include a tool capable of detecting sorting algorithms, among student algorithms, in our quantitative study and a collection of sentences with positive feedback on the concept of design tests, proving the easy understanding of the tests implemented in the tool and its usefulness in the education field. pt_BR
dc.identifier.uri http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/23287
dc.date.accessioned 2022-01-18T20:58:57Z
dc.date.available 2022-01-18
dc.date.available 2022-01-18T20:58:57Z
dc.type Dissertação pt_BR
dc.subject Ensino de programação pt_BR
dc.subject Qualidade de código pt_BR
dc.subject Design tests pt_BR
dc.subject Feedback personalizado em programação pt_BR
dc.subject Padrões de codificação pt_BR
dc.subject Educação em ciência da computação pt_BR
dc.subject Análise estática pt_BR
dc.subject Programming teaching pt_BR
dc.subject Code quality pt_BR
dc.subject Testes de projeto pt_BR
dc.subject Custom programming feedback pt_BR
dc.subject Coding standards pt_BR
dc.subject Computer science education pt_BR
dc.subject Static analysis pt_BR
dc.subject Enseñanza de la programación pt_BR
dc.subject Calidad del código pt_BR
dc.subject Pruebas de diseño pt_BR
dc.subject Comentarios de programación personalizados pt_BR
dc.subject Estándares de codificación pt_BR
dc.subject Educación informática pt_BR
dc.subject Análisis estático pt_BR
dc.subject Enseignement de la programmation pt_BR
dc.subject Qualité du code pt_BR
dc.subject Essais de conception pt_BR
dc.subject Commentaires sur la programmation personnalisée pt_BR
dc.subject Normes de codage pt_BR
dc.subject Formation en informatique pt_BR
dc.subject Analyse statique pt_BR
dc.rights Acesso Aberto pt_BR
dc.creator OLIVEIRA, Caio Batista.
dc.publisher Universidade Federal de Campina Grande pt_BR
dc.language por pt_BR
dc.title.alternative Providing structural feedback on algorithm designs in programming teaching using design tests. pt_BR
dc.description.sponsorship Capes pt_BR
dc.identifier.citation OLIVEIRA, C. B. Provendo feedback estrutural sobre projetos de algoritmo no ensino da programação utilizando testes de design. 2021. 60f. Dissertação (Mestrado em Ciência da Computação) - Programa de Pós-Graduação em Ciência da Computação, Centro de Engenharia Elétrica e Informática, Universidade Federal de Campina Grande, Paraíba, Brasil, 2021. pt_BR


Arquivos deste item

Este item aparece na(s) seguinte(s) coleção(s)

Mostrar registro simples

Buscar DSpace


Busca avançada

Navegar

Minha conta