Please use this identifier to cite or link to this item: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/23287
Title: Provendo feedback estrutural sobre projetos de algoritmo no ensino da programação utilizando testes de design.
Other Titles: Providing structural feedback on algorithm designs in programming teaching using design tests.
???metadata.dc.creator???: OLIVEIRA, Caio Batista.
???metadata.dc.contributor.advisor1???: MONTEIRO, João Arthur Brunet.
???metadata.dc.contributor.referee1???: ANDRADE, Wilkerson de Lucena.
???metadata.dc.contributor.referee2???: MASSONI, Tiago Lima.
???metadata.dc.contributor.referee3???: AGUIAR, Yuska Paola Costa.
Keywords: Ensino de programação;Qualidade de código;Design tests;Feedback personalizado em programação;Padrões de codificação;Educação em ciência da computação;Análise estática;Programming teaching;Code quality;Testes de projeto;Custom programming feedback;Coding standards;Computer science education;Static analysis;Enseñanza de la programación;Calidad del código;Pruebas de diseño;Comentarios de programación personalizados;Estándares de codificación;Educación informática;Análisis estático;Enseignement de la programmation;Qualité du code;Essais de conception;Commentaires sur la programmation personnalisée;Normes de codage;Formation en informatique;Analyse statique
Issue Date: 10-Dec-2021
Publisher: Universidade Federal de Campina Grande
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.
???metadata.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.
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.
Keywords: Ensino de programação
Qualidade de código
Design tests
Feedback personalizado em programação
Padrões de codificação
Educação em ciência da computação
Análise estática
Programming teaching
Code quality
Testes de projeto
Custom programming feedback
Coding standards
Computer science education
Static analysis
Enseñanza de la programación
Calidad del código
Pruebas de diseño
Comentarios de programación personalizados
Estándares de codificación
Educación informática
Análisis estático
Enseignement de la programmation
Qualité du code
Essais de conception
Commentaires sur la programmation personnalisée
Normes de codage
Formation en informatique
Analyse statique
???metadata.dc.subject.cnpq???: Ciência da Computação
URI: http://dspace.sti.ufcg.edu.br:8080/jspui/handle/riufcg/23287
Appears in Collections:Mestrado em Ciência da Computação.

Files in This Item:
File Description SizeFormat 
CAIO BATISTA OLIVEIRA – DISSERTAÇÃO (PPGCC) 2021.pdf562.8 kBAdobe PDFView/Open


Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.