Título
Illustrating debugger execution leveraging on variable roles
Autor
Sousa, Hugo Silva
Resumo
pt
A programação é uma temática na qual os alunos encontram muitas dificuldades. Em unidades curriculares de introdução à programação, várias dessas dificuldades estão relacionadas com a compreensão de algoritmos. Os papéis das
variáveis são uma abstração que foi introduzida para melhorar a compreensão
de algoritmos implementados em código. Outras investigações relacionadas com
depuradores pedagógicos mitigaram algumas dificuldades de aprendizagem, permitindo aos iniciantes uma visualização passo-a-passo auxiliada de componentes
gráficos. No entanto, as abordagens existentes representam graficamente as variáveis de forma uniforme sem distinções relativas ao seu papel no algoritmo. Para
tomar vantagem dos papéis das variáveis na ilustração, os seus papéis necessitam de lhes ser atribuídos. Abordagens prévias requerem identificação manual
do papel ou baseiam-se em aprendizagem automática mas com resultados pouco
satisfatórios.
Foi desenvolvido um componente de classificação de variáveis de acordo com
o seu papel utilizando um conjunto de regras que podem ser verificadas através
de análise estática. Tomar partido dos papéis das variáveis na visualização requer
que existam diferentes representações visuais concretas atribuídas aos diferentes
papéis. Foi conduzido um estudo exploratório para investigar como os professores
de programação representam variáveis com diferentes papéis nas suas explicações
algorítmicas. Por fim, foi desenvolvida uma extensão (PandionJ) de um depurador
que consiste numa vista que mostra as variáveis com representações diferentes de
acordo com os seus papéis. Esta vista utiliza o componente previamente mencionado para inferir o papel de cada variável a ser representada e utiliza componentes visuais semelhantes às ilustrações mais proeminentes encontradas no nosso
estudo.
en
Programming is a subject in which students face many difficulties. In in
troductory courses, many of those difficulties relate to understanding algorithms.
Variable roles were proposed as an abstraction to better understand algorithms im
plemented in code. Previous research on pedagogical debuggers mitigated learning
difficulties, allowing novices to see program execution step-by-step with graphical
forms of visualization. However, existing approaches display variables uniformly
without taking into account their role in the algorithm. In order to take advantage
of variable roles in illustration, roles need to be assigned to variables. Previous
approaches either require manual role classification or rely on machine learning
with unsatisfactory performance.
We developed a component for classifying variables according to their role us
ing a set of rules that can be checked with static analysis. Leveraging variable roles
in visualization requires different concrete visual representations assigned to the
distinct roles. We conducted an exploratory study on how programming instruc
tors represent variable roles in their algorithm explanations. Finally, we developed
a debugger extension (PandionJ) that consists of a view that displays variables
with different visual representations according to their roles. This debugger view
uses the previously mentioned component to infer the roles of the variables and
uses visual components that resemble the most prominent illustrations found in
our exploratory study.