Escolar Documentos
Profissional Documentos
Cultura Documentos
RECIFE
2022
1
RECIFE
2022
2
Palavras-chave
Codebench. Análise. CRISP-DM. Aprendizado Supervisionado. Aprendizado de máquina.
Keywords
Codebench. Analysis. CRISP-DM. Supervised Learning. machine learning.
3
1. Introdução
O ensino superior, na educação formal brasileira, pode ser oferecido por instituições
públicas e/ou privadas, que conforme a Lei de Diretrizes e Bases da Educação (LDB) em seu
art. 43, tem por finalidade: estimular a criação cultural, o desenvolvimento do espírito científico
e do pensamento reflexivo; formar e diplomar pessoas nas diferentes áreas do conhecimento,
tornando-as aptas para a inserção em setores profissionais; incentivar o trabalho de pesquisa e
investigação científica, visando o desenvolvimento da ciência e da tecnologia; suscitar o desejo
permanente de aperfeiçoamento profissional; dentre outras.
De modo geral, o ensino superior tem seu foco na formação profissional e científica dos
indivíduos. Nos cursos de Computação que, segundo a Câmara de Educação Superior do
Conselho Nacional de Educação (CES/CNE) abrange os cursos de bacharelado em Ciência da
Computação, bacharelado em Sistemas de Informação, bacharelado em Engenharia de
Computação, bacharelado em Engenharia de Software e licenciatura em
Computação.(BRASIL, 2016)
Um outro problema, que não pode deixar de ser citado quanto às disciplinas de
programação, está na prática dos alunos em decorar conteúdos, essa agrava a compreensão dos
enunciados das questões que em sua grande maioria é apresentado de maneira contextualizada
e baseada em problemas. (RAPKIEWICZ et. al. 2006)
Em uma pesquisa, Bosse e Gerosa (2015), relatam que a taxa média de reprovação em
4
disciplinas introdutórias de programação é acima de 30% no Brasil, para Reino et al. (2015), na
Universidade Federal de Alagoas - UFAL a taxa de evasão no curso de graduação a distância de
sistemas de informação tem média de 83% e estes se evadem dentre os primeiros três semestres
do curso. Na pesquisa de Damasceno e Carneiro (2018), na Universidade Federal de
Uberlândia, a taxa de evasão nos cursos de computação varia entre 43% e 72%. Já no trabalho
de Krzyzanowski (2019), a uma evasão de 79% dos alunos não aprovados nas disciplinas de
Algoritmos e Programação na UFPR.
Para Schoeffel et al. (2018) essas elevadas taxas de reprovação podem levar os alunos a
desistirem do curso ou até mesmo, aumentar o tempo de seu percurso formativo. Isso decorre
porque o aluno apresenta dificuldade com, interpretação de texto, dificuldade de escrita, hábitos
de pesquisa e estudo, déficit em conteúdos de Matemática. (GIRAFFA e MORA, 2013) Por
outro lado, para o professor, todos os alunos quando entram em uma disciplina introdutória de
programação, têm o mesmo nível de embasamento, e em decorrência disso, acaba encontrando
dificuldades em traçar estratégias que possam prever o rendimento desse aluno em relação a
aprovação ou não nestas disciplinas.
Com ferramentas assim, as interações entre alunos e os problemas podem gerar uma
grande quantidade de informação, possibilitando a descoberta de eventuais obstáculos durante
o processo de ensino e aprendizagem.
1.2. Objetivo
1.2.1. Objetivo Geral
1.3. Justificativa
Para Vivian (2021), a tecnologia nos últimos anos vêm se propagando por todos os
lados, e nos entregando uma grande diversidade de soluções. O uso de tecnologias da
informação e comunicação nos sistemas educacionais, têm criado um grande volume de dados
de alunos, oportunizando assim, o uso de aprendizagem de máquina e mineração de dados
educacionais com o objetivo de melhorar os processos de ensino e aprendizagem e assim,
descobrindo as necessidades de aprendizagem para diferentes grupos de alunos.
2. Referencial Teórico
2.1. Disciplinas introdutórias de programação
Existe uma grande diversidade de ferramentas que tem esse objetivo, tais como: The
Huxley, feeper, URI Online Judge, MOJO, BOCA Online Contest Administrator e o
CodeBench que é o utilizado no nosso estudo. (GALVÃO, FERNANDES, GADELHA, 2016).
7
Os códigos desenvolvidos pelos alunos ficam disponíveis em um diretório que pode ser
acessado no próprio ambiente, este acesso é viabilizado através de Docker Containers
independente para cada aluno, dessa forma promove o isolamento das execuções e provê alta
segurança. Os alunos podem compilar, executar, testar, submeter uma solução, e fazer uma
pergunta. Esses dados são todos coletados para criar padrões de interação do aluno.
O conjunto de dados gerado pelo juiz online, contém os logs coletados das disciplinas
introdutórias de programação durante os anos de 2016 a 2022.
Para fazer a análise dos códigos submetidos, o CodeBench faz inicialmente uma análise
sintática do código, onde verifica se o código possui erros sintáticos conforme gramática da
linguagem de programação que está sendo utilizada na atividade. Em segundo momento a
análise lógica do código acontece, nesse ponto é verificado se o código é capaz de solucionar
de maneira correta e assertiva o problema proposto na atividade. (GALVÃO, FERNANDES,
GADELHA, 2016)
2.3. Learning analytics
A educação 3.0 é um termo que está sendo utilizado por muitos autores nos últimos
anos para tratar sobre uma nova geração educacional amparada pela era digital. Este termo
fornece um entendimento inicial para a compreensão do surgimento e consolidação do learning
analytics. (LENGEL, 2012)
Para Keats, Schmidt (2007), a educação 3.0 deve acompanhar as transformações que
acontecem na sociedade, da tecnologia e no trabalho e deve ter como objetivo principal,
preparar as pessoas para uma realidade pós industrial, ou seja, professores e alunos fazendo
produções colaborativas com o apoio de ferramentas tecnológicas para resolver problemas
reais. Todo esse processo colaborativo dos alunos torna cada vez mais viável e acessível o
monitoramento e a retroalimentação dos dados com base em tecnologias de learning analytics.
Learning Analytics (LA) é uma área de pesquisa e prática emergente que teve suas
primeiras discussões em uma conferência chamada LAK - Learning Analytics and Knowledge,
em 2011, em Alberta - Austrália. Nos anos seguintes surge o SoLAR - Society for Learning
Analytics Research, rede interdisciplinar de pesquisadores que exploram o impacto do
Analytics no ensino, aprendizagem, treinamento e desenvolvimento educacional.
8
O L.A. tem como propósito, compreender o progresso dos alunos ao longo de sua
trajetória, seja, programa, disciplina ou curso, com isso, possibilitando qualificar sua interação
com conteúdos, ferramentas e pessoas. Para Johnson (2015), o uso de L.A. traz a possibilidade
de construir melhores propostas pedagógicas, capacitar os alunos de maneira mais ativa,
identificar situações de riscos nos alunos e avaliar fatores que podem afetar a conclusão e ou
sucesso na aprendizagem.
Fazendo parte da ciência de dados educacionais, o L.A. vem fortemente como uma
forma mais efetiva de avaliar as respostas dos alunos e a partir disso, fornecer feedback
imediatos e prever possíveis ajustes na apresentação de conteúdos e ainda a proposição de
atividades personalizadas.
No terceiro eixo, temos os objetivos das análises, que podem ser: monitoramento e
análise, predição e intervenção, Avaliação e Feedback, Personalização e Recomendação, e por
fim, reflexão, estes objetivos podem são explanados no quadro 1. No último eixo, são propostas
técnicas para serem empregadas na detecção de padrões contidos nos dados, tais como,
Academic Analytics - ampla categoria de aplicações e tecnologias para coletar, armazenar,
analisar e fornecer resultados para ajudar os usuários a tomarem melhores decisões, temos
também a mineração de dados educacionais ou EDM - Educational Data Mining, cujo objetivo
é definir métodos para a exploração de dados provenientes de ambientes educacionais e
utilizá-los para uma melhor compreensão dentro do contexto de aprendizagem.
Quadro 1: Objetivos da análise realizada pelo LA.
Objetivo Descrição
Monitoramento e Monitoramento das ações dos alunos e a geração de relatórios obtidos
Análise com base nas análises realizadas.
2.6. CRISP-DM
Na segunda etapa, tem-se o Data understanding ou Compreensão dos dados. Nessa fase,
deve ocorrer a coleta de dados, exploração e a descrição de cada dado. Como exemplo, pode
ser criado um glossário explicando a importância de cada coluna da base de dados.
Na etapa três, chamada de Data preparation ou Preparação dos dados, como o próprio
nome já diz, é onde ocorre a limpeza e filtragem dos dados. É importante analisar cada dado
com base no glossário criado na etapa anterior e definir um critério de exclusão para que
apenas as informações mais relevantes sejam utilizadas na etapa seguinte.
3 Trabalhos Relacionados
Quando o objetivo é prever a evasão de alunos, o trabalho de Pereira (2021), faz uso de
mineração de dados sociodemográficos associado ao algoritmo AdaBoost. O modelo de evasão
de alunos alcançou 70,1% de accuracy e precision. A pesquisa conseguiu entregar um modelo
facilmente adaptável, utilizando como metodologia o CRISP-DM, e viabilizou a identificação
de um perfil sociodemográfico de evasão estudantil.
Vale ressaltar que nos trabalhos de Azcona et al. (2018) e Quille (2019), fizeram uso de
modelos preditivos para melhorar o processo de ensino e aprendizagem com turmas de
programação em um ambiente real, nestes modelos preditivos as características selecionadas
foram: histórico acadêmico dos alunos e progresso dos alunos no trabalho de laboratório, após
a predição foram realizadas intervenções, onde os alunos recebiam notificações personalizadas
com base no desempenho previsto.
4. Metodologia
Trata-se de um estudo metodológico, pois este faz uso sistemático dos conhecimentos
existentes através da obtenção, organização e análise dos dados para propor novas
intervenções, criar novos instrumentos ou métodos de aferição (POLIT, BECK, HUNGLER,
2004), e tem um caráter descritivo, que segundo Gil (2002) são pesquisas que visam descobrir
a existência de associações entre variáveis, como, por exemplo, pesquisas que buscam entender
o nível de rendimentos ou de escolaridade de uma determinada população.
por semestre, sendo que em 2020, devido a pandemia de COVID-19 foi criado um semestre
com disciplinas no chamado “Ensino Remoto Emergencial”, isso fez com que neste ano em
específico, tenha acontecido 3 semestres, 2020-1, 2020-2 e 2020-ERE
Para uma melhor compreensão dos dados coletados, a Figura 3 nos apresenta a
quantidade de turmas, quantidades de alunos por turma, quantidade de atividades de casa,
quantidade de atividades avaliativas, quantidade de códigos feitos pelos alunos e quantidade de
testes e submissões dos códigos feitos pelos alunos.
Fonte: https://codebench.icomp.ufam.edu.br/dataset/
Cada módulo possui uma lista de atividades com uma média de 10 questões e uma
avaliação com dois blocos de questões. Ao final do semestre, o estudante terá resolvido sete
listas de exercícios e realizado sete avaliações. Abaixo, na Figura 4, está exemplificado o
processo de distribuição das atividades.
16
Nota-se que, apesar do CodeBench fornecer dados de 2016 a 2021, são mostrados
apenas os dados referentes ao período de 2016.1 a 2019.1. Isso se deve a uma alteração no
processo acadêmico da instituição, que alterou a distribuição de avaliações, alterando assim, a
forma de cálculo da nota. Devido a isso, foi necessário realizar um recorte dos dados para
manter o padrão e não comprometer as análises.
Coluna Descrição
Coluna Descrição
ocorreu.
Colunas Descrição
n_submissoe Quantidade vezes em que o estudante submeteu sua solução para correção
s automática.
n_testes Quantidade vezes em que o estudante executa sua solução para teste.
Além dos dados expostos no Quadro 6, existem outras 93 características que tratam
sobre métricas de complexidade, métricas de código e métricas de software que não foram
consideradas para o trabalho da machine learning.
4.2. Preparação
Após a compreensão do negócio e dos dados, foi possível iniciar a preparação. A partir
disso, o processo foi dividido em três sub etapas que são: Integração dos dados, limpeza dos
dados e seleção das características.
Para a realização deste estudo, foram utilizadas três bases de dados distintas que
continham informações sobre estudantes, submissões e atividades. Essas bases tinham um dado
incomum como identificador de relacionamento, dessa forma, a fim de diminuir a
complexidade e gerar novos indicadores, as três bases foram unificadas no dataset Submissões.
Como pode ser observado na Figura 5 e nos Quadros 2, 3 e 4 apresentados durante a
compreensão dos dados.
Ao final desse processo de integração, foi gerada uma única base de dados contendo
mais de 140 características sobre os estudantes e as submissões de suas atividades. Dessas
características, apenas algumas serão selecionadas nas etapas seguintes, para assim, construir
uma nova base de dados para a criação do modelo.
Após a integração das bases, foi feita uma análise a fim de identificar quais
características precisavam ser tratadas de maneira direcionada para que o objetivo fosse
atingido com mais assertividade. Assim, foi realizada a limpeza e padronização dos dados,
nesse momento foi utilizado duas bibliotecas do sklearn, a SimpleImputer que calcula um valor
específico, por exemplo média, mediana ou moda, de uma determinada coluna e substitui os
valores ausentes pelo resultado encontrado, e a ColumnTransformer que cria uma pipeline e
21
Durante esse processo foram separados os tipos de dados (float e object), para que
pudessem ser tratados de maneira individualizada. Para os float, foi utilizado a estratégia de
preenchimento dos dados ausentes com a mediana, e para os object, substituição dos ausentes
pelos dados mais frequentes.
Nos dados de atividades, foi identificado turmas introdutórias que não impactaram para
o cálculo da nota final, desse modo, as turmas “Primeiros passos com o Python” foram
removidas. Além disso, após verificação, constatou que os tipos de algumas atividades
precisavam ser corrigidos; pois, atividades do tipo exam, estavam sendo atribuídas como
homework, dessa maneira interferindo nos resultados.
A fim de gerar a característica alvo do estudo, foi realizado o cálculo da nota final do
estudante, para isto, foi considerado as sete listas de atividades e as sete avaliações realizadas.
Cada avaliação possui um peso específico que vai incrementando conforme avança nos
módulos. Para cada atividade, foi considerado um peso fixo de aproximadamente 2.15%,
enquanto que para as avaliações, foi considerado um peso crescente com valores que vão de
6.1%, 8.11%, 10.12%, 12.13%, 14.14%, 16.15% e 18.2%, respectivamente para cada avaliação
aplicada no módulo.
algoritmos.
Para a característica alvo, foi considerada a média geral de 5, onde estudantes que
obtiverem uma nota maior ou igual a 5 são classificados como aprovados, enquanto que os
demais são classificados como reprovados. Essa nota foi utilizada para seguir o mesmo padrão
seguido nos estudos relacionados à construção dos modelos preditivos com dados do
codeBench. PEREIRA (2020)
Dessa maneira, com base nas análises realizadas, foram selecionadas apenas as
execuções realizadas durante o primeiro módulo da turma que compete a disciplina de variáveis
e estrutura sequencial de programação, pois, o modelo gerado estará treinado com dados
referentes ao primeiro módulo, sendo capaz de auxiliar na análise de desempenho do aluno já
nas etapas iniciais.
Assim, conforme Géron (2021), a seleção das características é uma das etapas mais
importantes, pois irá impactar diretamente no desempenho dos algoritmos. Dessa forma, as
características selecionadas no final de todo o processo de preparação, que está composto por
algumas características coletadas das submissões realizadas pelo estudante, algumas
características demográficas e a característica que é o alvo do estudo, aqui representado pela
coluna approved.
Após a preparação dos dados, foi realizada a criação dos modelos baseado em sete
algoritmos supervisionados: SGD, SVC, K-Neighbors, Decision Tree, Random Forest, Naive
Bayes e Logistic Regression, que foram descritos na seção 2 no tópico Algoritmos de
aprendizagem de máquina. Justifica-se a escolha desses algoritmos por serem os mais
utilizados em pesquisas anteriores com princípios relacionados ao estudo de modelos preditivos
de desempenho ou evasão de alunos em disciplinas introdutórias de programação, conforme
Pereira (2020). Vale salientar que em todos os algoritmos foram utilizados como método o
K-fold cross validation em suas execuções.
Para realizar o treinamento dos modelos, foi necessário acessar os dados preparados e
separar as características que iriam ser cruzadas para gerar a característica alvo. Como citado
na preparação dos dados, foi necessário criar a coluna approved que é a característica alvo do
estudo e indica se o estudante foi aprovado ou não, assim sendo, as demais colunas serão as
características que necessariamente influenciam na aprovação do aluno.
usados os métodos chamados, KFold, para fazer a separação e encontrar o melhor fold e o
cross_val_score, para pegar o desempenho com as métricas definidas. Dessa forma, nos K-1
folds são então usados para o treinamento do modelo e a hipótese induzida é testada no fold
restante. Tal processo é repetido K-vezes, de modo que todos os folds sejam usados uma única
vez como conjunto de teste; conforme afirma Lima (2021). Por fim, são geradas 2 variáveis de
modo que as quais possuem o prefixo “X” representam as características, enquanto que o
prefixo “y” representa o valor alvo.
Além dessas tratativas foi realizada a normalização da escala dos valores, pois muitas
colunas possuem valores em escala de proporção diferente, então, normalizá-las em uma única
escala pode auxiliar os algoritmos na predição. Para isso, foi usada uma classe chamada
StandardScaler do próprio scikit-learn, que permite normalizar os dados. Depois desse
processo foi criada uma pipeline (model_pipeline) contendo todos os algoritmos que serão
treinados.
Sabendo disso, para a avaliação dos algoritmos, foram selecionadas quatro métricas de
avaliação de desempenho que, conforme Pereira (2020), são as mais comumente utilizadas em
modelos preditivos de desempenho ou evasão de alunos. Assim, temos:
Por fim, é realizado a análise de consistência do modelo, assim segundo Géron (2021),
para um modelo ser considerado consistente ele deve possuir um equilíbrio nas taxas de
precision e recall, ou seja, geralmente esse ponto de equilíbrio é o ponto de interseção, além da
curva ROC, que compara os valores de TP em relação a FP; assim, quanto mais próximo a
curva estiver do canto superior esquerdo, melhor é o desempenho do algoritmo.
5. Resultados
Para avaliação deste estudo, tendo em vista a abordagem sugerida na metodologia,
realizamos experimentos utilizando aprendizado de máquina com algoritmos para responder às
questões de pesquisa mencionadas anteriormente, na seção 1.1.
Assim, foram utilizados dados extraídos do codeBench no período de 2016.1 a 2019.1,
considerando os dados demográficos dos alunos, as atividades pertencentes ao primeiro módulo
e as submissões realizadas pelo mesmo no período em questão, totalizando 3 bases de dados e
cerca de 33.949 dados para treinamento e teste.
(QP01): Quais algoritmos de aprendizado de máquina supervisionado podem ser
utilizados para prever desempenho de alunos de graduação em disciplinas introdutórias de
programação combinando dados demográficos com atributo de código gerados nos ambientes
de correção automática de código?
Para responder à questão acima, foi utilizado a metodologia do CRISP.DM com o
objetivo de compreender o negócio e os dados, preparar os dados, modelar os algoritmos e por
fim, avaliar seus resultados. Assim, para prever a aprovação ou reprovação de alunos em
disciplinas introdutórias de programação, foi realizada a implementação de um pipeline
contendo sete algoritmos para prever a característica alvo, assim foi utilizado os dados
demográficos dos alunos e as suas execuções realizadas durante o primeiro módulo da
disciplina de variáveis e estrutura sequencial de programação, durante os períodos 2016.1 a
2019.1.
A partir do processamento dos modelos de aprendizado de máquina selecionados e da
extração dos resultados por algoritmo, é possível observar conforme tabela 2, que os modelos
treinados tiveram uma variação de 0.67 à 0.72 na accuracy, 0.64 à 0.70 na precision, 0.70 à
0.73 no recall, e 0.66 à 0.71 no F1, assim os algoritmos que mais se destacaram foram o SVC e
em seguida o random Forest isso aconteceu pelo fato de que nestes algoritmos os números de
FP, TP, FN e TN foram mais consistentes.
25
Neste contexto, é possível observar que os modelos SVC e random Forest, tiveram
melhores resultados de métricas, pois possuem uma diagonal principal mais clara, assim
obtendo melhores resultados, enquanto a diagonal secundária é mais escura, assim erraram
menos.
Fazendo uma análise mais profunda no modelo baseado no algoritmo Random Forest
de maneira isolada e buscando validar a sua performance, foi implementado o grid search
que permite configurar os parâmetros fornecidos pelo algoritmo e testar N cenários de modo
a encontrar o melhor estimador. Assim, foi utilizada a função get_best_estimator, e após sua
execução, do melhor estimador encontrado, com os seguintes parámetros, o max_depth = 5,
max_características = 12, min_samples_split = 10 e n_estimators = 200.
Com esses novos dados encontrados, foi criado um modelo com estes parâmetros e
gerado o gráfico de variação da precision e recall, conforme figura 8. Nesse gráfico, pode-se
observar o limiar de decisão que é o valor de corte do modelo, que separa os valores preditos
como verdadeiro ou falso, onde quanto maior o limiar, menor é a recall, e quanto menor o
limiar, menor é a precision. Dessa forma, é importante ver que o limiar de decisão retornado
do modelo, está entre 0.4 e 0.6, onde acontece a intersecção da precision e recall. O eixo y,
indica os valores médios de recall e precision do modelo em cada um dos limiares
27
representados pelo eixo x. Percebe-se que nesse ponto de intersecção os valores médios se
estabilizam e depois começam a seguir trajetórias diferentes.
Com isso, podemos chegar à conclusão que é possível usar algoritmos de aprendizagem
de máquina para prever desempenho de alunos em disciplinas introdutória de programação com
o uso de dados demográficos e atributos de código, e ainda dizer que o algoritmo de random
forest que apresentou um melhor desempenho na maioria dos cenários testados é o melhor a ser
utilizado para tal problema.
(QP02): Quais as características demográficas são mais importantes quando
correlacionadas com atributos baseados em código?
Para responder à questão acima, foram realizadas algumas tratativas sobre cada
característica (classificador demográfico) em relação a nossa característica alvo que é a
aprovação.
Para entender como as características demográficas cruzadas com os atributos de
código se comportavam em relação à característica alvo do estudo, foi realizada uma análise
inicial com a base ainda desbalanceada. O objetivo era perceber qual influência e importância
os dados demográficos tinham em relação à aprovação dos alunos. Com essa primeira análise,
podemos observar que as métricas para cada característica individualmente estavam variando
entre 0.70 a 0.72 para accuracy, entre 0.69 a 0.71 para f1, entre 0.69 a 0.72 para precision e
entre 0.68 a 0.71 para recall, além de apresentar uma correlação baixa entre -0.5 a 0.27 para os
mesmo dados.
Conforme Gerón (2021), o coeficiente de correlação pode variar de -1 a 1. Quando está
próximo de 1, quer dizer que temos uma forte correlação positiva, quando está próximo de -1,
quer dizer que temos uma forte correlação negativa, já se tiver tendendo a 0, não existe
correlação entre as características. Nesse caso, pode-se observar que os dados demográficos
tinham correlações fracas. Isso pode ter sido causado pelo fato de ainda estarem
desbalanceados.
Assim, tentando melhorar as análises dos dados demográficos, foi feito o
balanceamento das características usando as abordagens de under_sample e over_sample, que
tem como principal processo, excluir dados das classes majoritárias e duplicar dados das
30
classes minoritárias, e suas correlações, respectivamente. Assim, podemos observar que após o
processo de balanceamento os dados apresentaram melhorias, retornando uma Accuracy entre
0.963 à 0.979, um f1 entre 0.963 à 0.976, uma precision entre 0.958 à 0.978 e uma Recall entre
0.960 à 0.975, porém, ainda assim apresentar uma correlação baixa. Como pode ser visto na
figura 11.
Com base nessa comparação, analisando a métrica de F1, usando o modelo preditivo
baseado no algoritmo de Random Forest. Pode ser observado que, depois de sua execução, o
grupo 81, quando associado aos atributos de código, obteve um rendimento mais satisfatório
em comparação aos demais grupos. Assim, podemos ver no Quadro 5, o dataset final,
composto por 8 características coletadas das submissões realizadas pelo estudante, 3
características demográficas que demonstraram maior relevância no processo de análise e 1
característica que é a característica alvo da pesquisa, representado pela coluna approved.
Colunas Descrição
6. Interface
Como vimos na seção anterior, vários modelos foram criados a fim de prever a
característica alvo do estudo. Com isso, foi criada uma aplicação para facilitar e tornar mais
prático o processamento dos dados e a geração dos resultados para o usuário final. Para o
desenvolvimento da aplicação foram utilizados a linguagem Python com a biblioteca flask e
TypeScript. A Figura 12, apresenta um trecho do código que implementa o uso do algoritmo
Random Forest para a predição dos resultados.
Na figura 13 é possível ver o resultado apresentado após ser inserido as bases de dados
do semestre 2019.2 com os dados referentes aos estudantes, atividades e execuções. Em
seguida foi gerado a predição dos resultados, vale salientar que a aplicação retorna como
resultado o código do estudante e sua situação com base na análise dos dados inseridos, além
de uma média geral de aprovações e reprovações.
34
7. Discussão
Os processos experimentais realizados durante este estudo, mostram que o uso de
aprendizado de máquina em dados demográficos e de código gerados a partir da interação de
alunos com ambientes de correção automática de código, pode realizar predições importantes
relacionadas às aprovações ou não de alunos em disciplinas introdutórias de programação
durante as primeiras semanas das disciplinas. Uma vez que, os modelos utilizados nesta
pesquisa foram capazes de gerar resultados expressivos quando comparados entre si, bem
como quando comparados a estudos realizados em outros momentos como os de Fonseca et al.
(2019), Pereira et al. (2019) e Azcona et al. 2018.
Vale ressaltar que nos estudos realizados por Fonseca et al. 2019 e Pereira et al. 2019
fazem uso da mesma base de dados extraída do ambiente de correção automática de código,
porém eles utilizam apenas os atributos baseados em código para prever o seu alvo. Nesses
estudos a taxa de Accuracy retornada do modelo de predição foi de 80% e 75%
respectivamente, enquanto no presente estudo utilizou-se de dados demográficos cruzados com
atributos de código extraídos do mesmo ambiente e obteve-se uma Accuracy de 73,89%.
Mesmo com resultados inferiores aos dos trabalhos anteriores, podemos observar que os dados
demográficos quando associados aos atributos baseados em código, alteram as características
dos resultados, afetando as taxas de reprovação de alunos.
Já se compararmos com o estudo realizado por Pereira (2021), que realizou a criação e
avaliação de um modelo preditivo de evasão de alunos em disciplinas introdutórias de
programação fazendo o uso de dados demográficos dos alunos, porém sem a utilização de
atributos de código, ele obteve 72% de efetividade no processo preditivo com uso do
classificador Random Forest, usando como métrica a curva ROC. Enquanto o presente estudo
alcançou 81% com a mesma métrica e o mesmo classificador.
É importante notar que mesmo com essas diferenças apresentadas, para minimizar o
problema de alto índice de reprovação em disciplinas introdutórias de programação, é
necessário realizar a detecção precoce desses alunos, conforme afirma Fonseca et al. (2019).
Nesse sentido, este estudo se destacou na tarefa de identificar alunos com chances de reprovar
com uma precisão bastante considerável de 74,3%. Vale salientar ainda que foi realizada uma
comparação de performance entre as características demográficas e a característica alvo, assim
possibilitando a construção de um modelo que retornasse predições ainda mais significativas,
visto que os dados demográficos são atributos importantes para serem observados, conforme
afirma Pereira (2021).
Além da predição da aprovação do aluno, este estudo ainda proporciona um
entendimento sobre a importância das características demográficas do conjunto de dados
armazenados no ambiente de correção automática de código que tiveram para os modelos,
tendo em vista que, a submissão dados aos modelos e a captura dos resultados são partes
inerentes e indispensáveis para o processo de predição; assim, entender quais característica é
mais relevante para alcançar os objetivos da predição, torna o estudo mais relevante para o
aumento do uso de ambientes de correção automática de código dentro de práticas pedagógicas
no ensino de disciplinas de programação.
Um dos objetivos desse estudo não é, e nunca foi, desqualificar os métodos tradicionais
utilizados dentro de salas e aula para medir o desempenho dos alunos, mais sim, ajudar aos
36
envolvidos a alcançar resultados ainda mais expressivos com o uso de machine learning dentro
de suas disciplinas apoiadas por ambientes de correção automática de código, como o
codebench.
Observando os algoritmos utilizados, vimos nos resultados que o Random Forest
obteve o melhor resultado considerando as quatro métricas utilizadas: precision, recall,
accuracy e f1, por mais que os outros algoritmos testados também tiveram seus desempenhos
considerados para a previsão de resultados. Com isso, mesmo analisando a importância das
características demográficas em relação a nossa característica alvo, não podemos afirmar que
as outras características devem ser desconsideradas para o propósito de aprovação.
A partir deste estudo, a população acadêmica pode compreender melhor quais das
características podem ter maior importância na predição da aprovação de alunos em disciplinas
introdutórias de programação nos primeiros módulos aplicados a cada aluno. É importante
ressaltar que, os resultados alcançados nesse estudo podem favorecer a sociedade acadêmica e
aos professores de disciplinas introdutórias de programação a tomarem melhores decisões e
direcionamentos quanto às práticas que direcionam os alunos a obtenção de desempenhos
satisfatórios para aprovação em disciplinas de programação.
8. Conclusão
Este estudo propôs utilizar algoritmos supervisionados de aprendizagem de máquina
para treinar modelos com dados gerados pela UFAM no ambiente de correção automática de
código, codebench, durante o período de 2016.1 a 2019.1 em disciplinas introdutórias de
programação. Com isso, a partir dos modelos de predição, foi possível explicar a importância
das características demográficas cruzadas com os atributos baseados em código em relação aos
resultados de aprovação e indicar o melhor conjunto de atributos para prever o alvo bem como
o melhor modelo a ser utilizado.
Para a construção da aplicação foram verificadas a importância de vários conjuntos de
características demográficas relacionadas ao alvo que era aprovação, ao final foi criado uma
base sólida com informações demográficas e atributos de código que impactaram diretamente
para a aprovação do aluno, em seguida foram testados modelos de aprendizado de máquina
com essa base criada, utilizando os algoritmos: SGD, SVC, K-Neighbors, Decision Tree,
Random Forest, Naive Bayes e Logistic Regression. O modelo que mostrou um melhor
resultado foi utilizando, o algoritmo Random Forest com resultados das métricas, Accuracy:
0.738903, Precision: 0.743169, Recall: 0.719577 e F1: 0.731183, em comparação com os
demais modelos e estudo realizados.
Em relação às características utilizadas para o modelo de predição criado, temos:
failFewAtpt, succFewAtpt, failManyAtpt, succManyAtpt, assignNoAtpt, individualAtpts,
generalAtpts, programmer, works, sharedComputer, isMale e approved.
módulo. Logo, realizar a avaliação das novas características por meio de novas análises é
essencial.
Além de realizar estudos mais aprofundados em anos e semestre subsequentes que não
foram abordados nesse estudo, sugere-se análises acerca dos períodos de pandemia 2020.1 à
2021.2 bem como a realização de recortes na população para entender melhor seu
comportamento e a obtenção de novos resultados.
Por fim, criar uma aplicação onde os usuários finais pudessem inserir dados oriundos de
ambientes de correção automática de código e assim, obter os resultados de predição mais
detalhadas de seus alunos. Uma sugestão para o enriquecimento dos dados seria acrescentar
outras bases oriundas de ferramentas como: URI Online Judge e o BOCA Online Contest
Administrator, que são ferramentas comumente usadas por professores em suas práticas
pedagógicas no ensino de programação.
38
REFERÊNCIAS
AGUIAR, G., PEREIRA, F. Uma Abordagem Data-driven para Predição Precoce da Evasão em
Turmas de Programação que Utilizam Juízes Online. 10.13140/RG.2.2.26694.50248, 2018
AHMAD A.S., HASSAN M.Y., ABDULLAH M.P., RAHMAN H.A., HUSSIN F.,
ABDULLAH H., SAIDUR R. A review on applications of ANN and SVM for building
electrical energy consumption forecasting Renew. Sustain. Energy Rev. 33, pp. 102-109,
10.1016/j.rser.2014.01.069, 2014.
AMRA I.; MAGHAR, A. Students performance prediction using KNN and Naïve Bayesian.
909-913. 10.1109/ICITECH.2017.8079967, 2017.
AZCONA, D., HSIAO, I. H., & SMEATON, A. F. Personalizing computer science education
by leveraging multimodal learning analytics. IEEE Frontiers in Education Conference (FIE),
2018.
AZEVEDO, Ana; SANTOS, Manuel Filipe. KDD, SEMMA and CRISP-DM: a parallel
overview. IADS-DM, 2008.
CHAPMAN, Pete et al. (2000). CRISP-DM 1.0 Step-by-step data mining guide. SPSS inc, v. 9,
n. 13, p. 1-73, 2000.
COLPANI, R.. Mineração de Dados Educacionais: um estudo da evasão no ensino médio com
base nos indicadores do Censo Escolar. Informática na educação: teoria & prática. 21.
10.22456/1982-1654.87880, 2019.
GALVÃO, L.; FERNANDES, D.; GADELHA, B. Juiz online como ferramenta de apoio a uma
metodologia de ensino híbrido em programação. Brazilian Symposium on Computers in
Education (Simpósio Brasileiro de Informática na Educação - SBIE), [S.l.], p. 140, nov. 2016.
ISSN 2316-6533. Disponível em:
<https://www.br-ie.org/pub/index.php/sbie/article/view/6694/4582>. Acesso em: 15 abr. 2022.
GIL, A. C. Como elaborar projetos de pesquisa. - 4. ed. - São Paulo: Atlas, 2002.
HELMINEN, J.; MALMI, L. Jype - a program visualization and programming exercise tool for
python. Em: SOFTVIS '10 Proceedings of the 5th international symposium on Software
visualization, 2010.
JIA, W., ZHAO, D., SHEN, T., DING, S., ZHAO, Y., HU, C. An optimized classification
algorithm by BP neural network based on PLS and HCA. Applied Intelligence, v. 43, n. 1, p.
176-191, 2015.
JOHNSON, L. et al. NMC Horizon Report: 215 Higher Education Edition. Austin, Texas: The
New Media Consortium, 2015.
KARIM, M., RAHMAN, R. Decision Tree and Naïve Bayes Algorithm for Classification and
Generation of Actionable Knowledge for Direct Marketing, Journal of Software Engineering
and Applications, Vol. 6 No. 4, 2013, pp. 196-206. doi: 10.4236/jsea.2013.64025.
KEATS, D. W., SCHMIDT, P. J. The Genesis and Emergence of Education 3.0 in higher
40
education and its potential for Africa. First Monday, v.12, n. 3, 2007.
LENGEL, J. Education 3.0: Seven Steps to Better Schools. Teachers College, Columbia
University, NY, 2012.
LIU, X., TOSUN, D., WEINER, M. W., SCHUFF, N., Alzheimer's Disease Neuroimaging
Initiative. Locally linear embedding (LLE) for MRI based Alzheimer's disease classification.
Neuroimage, v. 83, p. 148-157, 2013.
PEREIRA, F. D. Towards AI-human hybrid online judges to support decision making for CS1
instructors and students. 265 f. Tese (Doutorado em Informática) - Universidade Federal do
Amazonas, Manaus (AM), 2021.
QUILLE, K., BERGIN, S. CS1: how will they do? How can we help? A decade of research and
practice. Computer Science Education, 29(2-3), 254-282, 2019.
Education (Simpósio Brasileiro de Informática na Educação - SBIE), [S.l.], p. 1527, out. 2017.
ISSN 2316-6533.
RAPKIEWICZ, C. E.; FALKEMBACK, G.; SEIXAS, L.; SANTANA DOS SANTOS, N.;
CUNHA, V. V.; KLEMANN, M. Estratégias Pedagógicas no Ensino de Algoritmos e
Programação Associadas ao Uso de Jogos Educacionais. RENOTE - Revista Novas
Tecnologias na Educação, Vol. 4(2), pp. 1-11, 2006.
REINO, Lucianny Raihanny Alves Cavalcante et al. Análise das Causas da Evasão na
Educação a Distância em uma Instituição Federal de Ensino Superior. Brazilian Symposium on
Computers in Education (Simpósio Brasileiro de Informática na Educação - SBIE), [S.l.], p. 9,
out. 2015. ISSN 2316-6533
SIEMENS, G; LONG, P. Penetrating the fog: Analytics in learning and education. Educause
Review, v. 46, n. 5, p. 30- 32, 2011.
SILVA, B.D.; ARAÚJO, A.M.; VENDRAMINI, C.M.; MARTINS, R.X.; PIOZEVAN, N. M.;
PRATES, E.; DIAS, A.S.; ALMEIDA, L.S.; JOLY, M.C.R.A. Aplicação e uso de tecnologias
pelos professores do ensino superior no Brasil e em Portugal. Rev. Educação, Formação;
Tecnologias. V.7, n. 1, pág. 3 – 18, jan – jun, 2014. ISSN: 1646 – 933x, 2014.
SINAGA, K. P.; YANG, M., Unsupervised K-Means Clustering Algorithm, in IEEE Access,
vol. 8, pp. 80716-80727, 2020.
SOUCY, P., MINEAU, W. G. A simple KNN algorithm for text categorization, Proceedings
2001 IEEE International Conference on Data Mining, pp. 647-648, 2001.
VENABLES, W. N.; RIPLEY, B. D. Modern applied statistics with S. New York: Springer
Verlag, 2002.
WIRTH, R., HIPP, J. CRISP-DM: Towards a standard process model for data mining. In:
Proceedings of the 4th international conference on the practical applications of knowledge
discovery and data mining. 2000. p. 29-39.