Академический Документы
Профессиональный Документы
Культура Документы
1. Identificação do Projeto
Título do Projeto de Iniciação Científica
Predição automática de dificuldade de questões em ambientes de programação
Orientador
Leandro Silva Galvão de Carvalho
Bolsista
Pedro Henrique Cerávolo dos Santos
Renovação de Projeto
Sim Não X
2. Introdução
Juízes online, ou ambientes de correção automática de código (ACAC), são sistemas online
que testam códigos de programação submetidos por estudantes e os avaliam quanto à sua corretude.
Dessa forma, eles proveem feedback rápido e automático ao estudante a respeito de problemas de
programação cadastrados por professores. Por conta disso, eles têm sido cada vez mais adotados por
universidades do Brasil [URI Online Judge][CodeBench][The Huxley][Run Codes][Feeper] e do
mundo.
Dessa forma, este projeto visa reunir maneiras de graduar questões de programação em
dificuldade automaticamente. Isso irá permitir que os professores elaborem avaliações balanceadas,
evitando assim o problema de deixar a escolha das questões inteiramente como responsabilidade dos
instrutores. Serão aproveitados os dados coletados pelo CodeBench em relação aos exercícios
resolvidos desde 2015. Informações como o tempo que cada aluno toma para a resolução de cada
exercício, o número de tentativas de submissão para cada aluno, a média de linhas apagadas e
reescritas, entre outras, serão utilizadas a fim de aperfeiçoar a classificação das questões de
programação.
Porém, para utilizar os juízes online de maneira eficiente, é importante que os instrutores
possam aplicar exames e questões de maneira que o nível dessas seja levado em consideração. Isso
UNIVERSIDADE FEDERAL DO AMAZONAS
INSCRIÇÃO DE PROJETOS PARA O PIBIC/PAIC 2018-2019
evita que o padrão dos desafios apresentados difira muito da capacidade dos estudantes que usam os
juízes online.
Assim, com a crescente adoção de juízes online por instituições de ensino, essa necessidade
de categorizar os exercícios e suas dificuldades se tornou ainda maior, já que, a fim de promover um
aprendizado eficiente, os alunos devem receber um feedback ágil [CARVALHO et al. 2016] e
preciso para evitar atrasos desnecessários no ensino ou exames incorretos.
Além disso, outra linha de raciocínio que possui uma aderência abrangente na área de
pesquisa é o uso de métricas baseadas em atributos de software, que podem ser por exemplo, o
tamanho do código-fonte, o número de comentários, entre outros. Essa abordagem é eficiente pois
retira informações das respostas dos alunos, permitindo uma análise da complexidade dessas. A
pesquisa de [WHALLEY e KASTO, 2014] propõe o uso de métricas de software para uma
classificação automática dos desafios apresentados, além de discutir a validade do uso dessas
técnicas.
Assim, métodos já estabelecidos serão comparados e unidos neste projeto com o objetivo de
calcular o grau de dificuldade de questões de programação aplicadas aos estudantes no juiz online
CodeBench. Serão utilizadas técnicas para predizer o grau de dificuldade, sem nenhuma interação
com os estudantes e, após isso, técnicas para classificar e refinar a predição, já com informações dos
alunos. Diferentemente das pesquisas mencionadas anteriormente, este projeto visa realizar esse
processo de maneira automática.
2. Justificativa
De maneira complementar, não é viável classificar as questões apenas com base nas técnicas
das taxonomias empregadas pela pedagogia, como a de BLOOM e a de SOLO [ELNAFFAR, 2016],
já que a interpretação da dificuldade de uma questão pode variar entre instrutores. Então é preciso
reunir métodos analíticos de categorizar as questões em dificuldade.
Além disso, este projeto está em linha com a pesquisa de [PEREIRA, 2017], porém com o
objetivo de estimar o grau de dificuldade da questão, em paralelo com os esforços da pesquisa
mencionada em predizer a probabilidade de um certo estudante obter aprovação em uma disciplina
de programação. Nessa pesquisa, foram propostas técnicas que previam com um grau de precisão
aceitável a chance de um aluno de ser aprovado em disciplinas de programação. Porém, métodos de
classificar as questões que seriam aplicadas a esse discentes ainda não são aplicados.
3. Objetivos
4.1 Gerais
O projeto visa criar e aplicar um conjunto de técnicas para a predição precisa do grau de
dificuldade de questões de programação em ambientes de correção automática de código.
4.2 Específicos
4. Metodologia
Durante a etapa de classificação, serão utilizados os dados extraídos dos estudantes que
realizaram as questões analisadas na primeira etapa para a classificação da dificuldade das questões
aplicadas. Esses dados serão, de maneira a enfocar a análise, o percentual de acerto e o tempo médio
de resolução de cada questão dos alunos. Essas informações irão permitir uma classificação geral de
cada questão.
Além disso, essa categorização será reforçada por dados de entrada mais brutos, como tamanho de
resposta, número de tentativas de submissão, tamanho do enunciado da questão, além dos atributos
selecionados por [PEREIRA, 2017], que se mostraram relevantes na categorização de estudantes.
Assim, com uma organização eficiente desses dados, é possível extrair diversas informações sobre a
dificuldade que os estudantes possuíram durante a atividade, como mostra de maneira similar o
trabalho de [PEREIRA, 2017].
visão de mineração de dados educacionais (MDE) , que permite o uso eficiente de bases de dados
provenientes de ambientes educacionais [PAZ e CAZELLA, 2017]. Essa abordagem,
primeiramente, foca-se na interação entre o estudante e o computador [BAKER e YACEF, 2009],
analisando os dados que os estudantes geram nessa atividade e os utilizando a fim de extrair
informações úteis.
A partir dessa base de informações, as respostas dos alunos às questões e outros dados
estatisticamente significantes, como dados brutos de entrada do teclado, serão comparados a fim de
se estabelecer uma classificação das questões. Em especial, as respostas dos estudantes serão
comparadas com uma solução pronta, de autoria do instrutor da disciplina dos alunos. Essa
abordagem permite uma avaliação prévia de um problema e a comparação dessa solução com a dos
estudantes [WHALLEY e KASTO, 2014].
Já a predição é baseada na análise dos enunciados e de uma “solução pronta”, criada pelo
instrutor da disciplina. Assim, essa primeira etapa não possui nenhum dado de origem dos
estudantes. A abordagem da solução pronta, apesar das desvantagens, é útil para a aplicação de
métricas de software, capazes de quantificar a complexidade de um código fonte [ELNAFFAR,
2016]. Assim, diversas métricas de software, como complexidade ciclomática [McCABE, 1976],
número de operadores, “average nested block depth” e outras serão utilizadas para a criação de uma
nota prévia das questões.
Após as duas fases citadas, virá a etapa de confirmação, em que o resultado das técnicas de
predição e de classificação serão comparados. Essa comparação será feita a fim de estabelecer se
houve divergência entre os resultados de cada etapa. Caso isso ocorra, é possível que umas das
técnicas utilizadas não gera respostas precisas. Caso contrário, é provável que os métodos usados
são efetivos devido a diferença entre a classificação e a predição.
UNIVERSIDADE FEDERAL DO AMAZONAS
INSCRIÇÃO DE PROJETOS PARA O PIBIC/PAIC 2018-2019
Desse modo, as seguintes etapas serão adotadas para a realização deste projeto:
A. Revisão da literatura sobre o uso de métricas de software e da aplicação da MDE;
B. Seleção e teste das métricas de software em um ambiente controlado a fim de garantir a
precisão dessas;
C. Implementação das técnicas selecionadas no CodeBench a fim da aplicação rápida das
métricas de software;
D. Início da fase de classificação a partir da MDE;
E. Análise estatística da precisão apresentada pela abordagem das métricas de software e da
classificação;
F. Aplicação das técnicas estabelecidas nas turmas novas;
G. Análise final da precisão apresentada pelas técnicas entre os anos;
Conforme a Resolução CNS 510/2016, não é necessário submeter esta proposta de pesquisa
ao Comitê de Ética em Pesquisa (CEP) pois envolve “pesquisa com bancos de dados, cujas
informações são agregadas, sem possibilidade de identificação individual”.
5. Referências
BAKER, R. and YACEF K. (2009), “The State of Educational Data Mining in 2009: A Review
and Future Visions.” JEDM -Journal of Educational Data Mining, 2009
CARVALHO, Leandro S. G.; OLIVEIRA, David. ; GADELHA, Bruno. Juiz online como
ferramenta de apoio a uma metodologia de ensino híbrido em programação. In: Simpósio
Brasileiro de Informática na Educação (SBIE), 2016, Uberlândia. Congresso Brasileiro de
Informática na Educação (CBIE). 2016.
CARVALHO, Leandro S.; OLIVEIRA, David B. F.; GADELHA, Bruno F. Juiz online como
ferramenta de apoio a uma metodologia de ensino híbrido em programação. In: Simpósio
Brasileiro de informática na educação. 2016.
ELNAFFAR, Said. Using Software Metrics to Predict the Difficulty of Code Writing Questions.
In: IEEE Global Engineering Education Conference (EDUCON). 2016
LE, Nguyen Thinh; PINKWART, Niels. Towards a Classification for Programming Exercises.
In: 2nd Workshop on AI-supported Education for Computer Science at the 12th International
Conference on Intelligent Tutoring, Systems (ITS). 2014.
MASRI, Yasmine H. El. et al. Predicting item difculty of science national curriculum tests: the
case of key stage 2 assessments. In: The Curriculum Journal. 2016.
PAZ, Josende Fábio; CAZELLA, Silvio César. Identificando o perfil de evasão de alunos de
graduação através da Mineração de dados Educacionais: um estudo de caso de uma
Universidade Comunitária. In: Anais dos Workshops do VI Congresso Brasileiro de Informática
na Educação. 2017.
PEREIRA, Filipe D.; OLIVEIRA, Elaine H. T.; OLIVEIRA, David F. Predição de Zona de
Aprendizagem de Alunos de Introdução à Programação em Ambientes de Correção Automática
de Código. In: Anais do XXVIII Simpósio Brasileiro de Informática na Educação. 2017.
WHALLEY, Jacqueline; KASTO, Nadia. How difficult are novice code writing tasks? A
software metrics approach. In: Proceedings of the Sixteenth Australasian Computing Education
Conference (ACE2014), Auckland, New Zealand. 2014.
WHALLEY, Jacqueline; KASTO, Nadia. Measuring the difficulty of code comprehension tasks
using software metrics. In: Fifteenth Australasian Computing Education Conference
(ACE2013). 2013.
UNIVERSIDADE FEDERAL DO AMAZONAS
INSCRIÇÃO DE PROJETOS PARA O PIBIC/PAIC 2018-2019
6. Cronograma de Atividades
Nº Descrição Ago Set Out Nov Dez Jan Fev Mar Abr Mai Jun Jul
2018 2019
1 Revisão da literatura X
2 Seleção e teste das métricas
X X
de software
3 Implementação das métricas
X X
de software no ACAC
4 Relatório intermediário X
5 Uso da MDE para a
X X X X X X X X
classificação
6 Análise estatística da
X X X X X X X
predição e da classificação
7 Aplicação das técnicas em
X X X X
turmas novas
8 Análise da precisão do grau
X
de dificuldade calculado
9 Relatório final X X