dc.creator | Kummer Neto, Alberto Francisco | |
dc.date.accessioned | 2021-07-13T17:58:37Z | |
dc.date.available | 2021-07-13T17:58:37Z | |
dc.date.issued | 2017-05-19 | |
dc.identifier.uri | http://repositorio.ufsm.br/handle/1/21411 | |
dc.description.abstract | Programming is a difficult subject, both to teach and learn. Thus, learning difficulties are common between CS
students, commonly by the abstract nature of this subject. This concern is reinforced by its lenghty literature,
and several studies show its close relation with failure and evasion rates in related undergraduate courses. The
first papers of this subject date from 80’s, and several authors emphasize its importance due to its great affect
to students formation process. Within the literature, it is possible to identify that “reactive” approaches gained
more attention. This kind of discussions addresses very specific issues in programming of teaching-learning process,
offering regular-shaped solutions (known as pedagogical patterns) to some problems. A pedadogical pattern
suggests the capture and report of good teaching and learning practices, and emphasizes aspects such as context,
forces, weakenesses, resources e consequences. Some pedadogical patterns discuss methodologies about how to
keep track of student advances. The tracking activity could be overwhelming to teachers, as its complexity and
time requirements grows with the classroom size. In general, teachers keep track of students progress through practice
activities, which require that students to write some code to solve a problem specified by the teacher. Thus, a
thorough analysis of students source code could indicate the learning defficiencies of some programmimg subjects.
Practice activities also allow the use of tools to perform automatic code analysis, which could free some teacher
time to more significant activities that might help in classes. This work introduces a tool to automate the analysis
of source code repositories of programming students employing static code analysis tools. The proposed method
suggest that all didactic activities be developed inside git repositories, and the publishing of solutions might be
done using hosting servers like Github and Bitbucket, allowing the simultaneous analysis of several source code
repositories of students of a programming class. It also aggregates the result of such analysis into a single report
that can be viewed through a integrated user interface. As it is about the automation of a process, the tool allows
the optimization of instructor time to evaluate students progress during the development of practical activities. This
optimization reflects on a quick feedback to students as well, allowing a anticipated feedback to student about their
work-in-progress solutions. Such feedback enables the improvement of their implementations before activities due
date. The proposed approach has a additional gain of reinforce the usage of version control systems, a generally
overlooked topic of CS courses. The conducted experiments showed that such approach is valid, as it gives evidences
about students training. The teachers who participaded of study cases reported a strenghten engagement of
students in classroom activities, as verified by the frequent requests of access to to detection reports compiled with
the method. | eng |
dc.language | por | por |
dc.publisher | Universidade Federal de Santa Maria | por |
dc.rights | Attribution-NonCommercial-NoDerivatives 4.0 International | * |
dc.rights.uri | http://creativecommons.org/licenses/by-nc-nd/4.0/ | * |
dc.subject | Automatização de processos | por |
dc.subject | Análise estática de código | por |
dc.subject | Visualização integrada de resultados | por |
dc.subject | Process automation | eng |
dc.subject | Static code analysis | eng |
dc.subject | Integrated view of results | eng |
dc.title | Exploração de análises automatizadas de repositórios de códigos para feedback frequente a alunos de programação | por |
dc.title.alternative | Providing continuous feedback to programming students through automated analysis of source code repositories | eng |
dc.type | Dissertação | por |
dc.description.resumo | Programação é uma habilidade difícil de ensinar e aprender, e as dificuldades de aprendizado são recorrentes entre
alunos de Computação. Tal dificuldade decorre de sua natureza abstrata, fato que é corroborado pela extensa
literatura sobre o assunto, e está diretamente relacionado aos índices de reprovação e evasão dos cursos da área.
As primeiras discussões sobre o assunto datam da década de 80, e diversas trabalhos ressaltam a importância do
tópico dado o seu efeito abrangente em todo o período de formação de um aluno. É possível identificar uma linha
de discussões sobre metodologias para o ensino-aprendizagem de programação que seguem uma abordagens reativa,
que sugerem soluções para problemas específicos identificados em turmas de programação. Tal abordagem é
conhecida como padrão pedagógico, e tem como objetivo a caracterização de um problema pontual e sua respectiva
solução, e cobre aspectos como contexto, forças, fraquezas, recursos e consequências. Na linha de discussão
de padrões pedagógicos, há trabalhos afirmando que acompanhar o progresso dos alunos, individualmente, é um
dos maiores desafios enfrentados pelos professores de programação, visto que é uma atividade trabalhosa e que
demanda muito tempo do educador, e que por vezes mostra-se inviável frente a turmas grandes. Em linhas gerais,
o progresso dos alunos costuma ser verificado por meio de atividades práticas de programação, que consistem na
elaboração de soluções computacionais para uma série de problemas sugeridos pelo educador. Posteriormente,
a análise minuciosa dos códigos dos alunos é capaz de indicar deficiências de aprendizado. A acompanhamento
dos alunos por meio de atividades práticas também possibilita o emprego de ferramentas de análise automatizada
de código, que potencialmente resulta em uma redução da carga de trabalho do educador, que poderia ser melhor
gasto na avaliação de novas estratégias e metodologias de atividades didáticas. Este trabalho propõe uma solução
para análise automatizada de repositórios de código de alunos de programação empregando-se ferramentas de análise
estática de código. O método proposto sugere que as atividades práticas de programação sejam desenvolvidas
dentro de um repositório git fazendo uso de serviços de hospedagem online como Github e Bitbucket, e prevê a
análise simultânea de vários repositórios de código de uma turma de programação, agregando os resultados em
uma interface de visualização integrada. Por tratar-se da automatização de um processo, o método possibilita um
feedback rápido para instrutor e alunos da disciplina, promovendo de um parecer antecipado sobre as soluções das
atividades práticas durante o seu desenvolvimento, habilitando a correção das implementações antes do prazo de
entrega final das atividades. Adicionalmente, a abordagem estimula a frequente interação com sistemas de controle
de versão, exercitando as habilidades dos alunos com esse tipo de ferramenta. Os experimentos conduzidos
mostraram que a abordagem é válida, fornecendo indícios ao educador sobre a formação de seus alunos. Os educadores
que cederam acesso aos repositórios de código de suas disciplinas relataram o interesse dos alunos que
participaram do experimento, que foi verificado pela solicitação de acesso as detecções apontadas pela ferramenta. | por |
dc.contributor.advisor1 | Charao, Andrea Schwertner | |
dc.contributor.advisor1Lattes | http://lattes.cnpq.br/8251676116103188 | por |
dc.contributor.referee1 | Guerra, Eduardo Martins | |
dc.contributor.referee2 | Augustin, Iara | |
dc.creator.Lattes | http://lattes.cnpq.br/7971691202189808 | por |
dc.publisher.country | Brasil | por |
dc.publisher.department | Ciência da Computação | por |
dc.publisher.initials | UFSM | por |
dc.publisher.program | Programa de Pós-Graduação em Ciência da Computação | por |
dc.subject.cnpq | CNPQ::CIENCIAS EXATAS E DA TERRA::CIENCIA DA COMPUTACAO | por |
dc.publisher.unidade | Centro de Tecnologia | por |