Você está na página 1de 43

CESAR SCHOOL

FABRICIO CARNEIRO COSTA

PREDIÇÃO DE DESEMPENHO DE ALUNOS DE GRADUAÇÃO


EM DISCIPLINAS DE PROGRAMAÇÃO

RECIFE
2022
1

FABRICIO CARNEIRO COSTA

PREDIÇÃO DE DESEMPENHO DE ALUNOS DE


GRADUAÇÃO EM DISCIPLINAS DE PROGRAMAÇÃO

Artigo Estendido apresentado ao programa de


Mestrado do Centro de Estudos e Sistemas
Educacionais do Recife – CESAR School, como
requisito para a obtenção do título de Mestre em
Engenharia de Software.

Orientação: Prof. Dr. Rafael Ferreira Leite de


Mello

RECIFE
2022
2

Predição de desempenho de alunos de graduação em


disciplinas de programação
Fabricio Carneiro Costa1

CESAR – Centro de Estudos e Sistemas Avançados do Recife – CESAR SCHOOL


fcc@cesar.school

Resumo. Os cursos de computação por suas características, contém um grande


grupo de disciplinas de programação e estas, por sua vez, têm apresentado cada
vez mais altos índices de reprovação e, por esse motivo, vários estudos vêm sendo
conduzidos para realizar a predição do desempenho do aluno, para ajudar na
tomada de decisão. Nesse caminho, o presente trabalho busca desenvolver um
algoritmo de predição de desempenho dos alunos de graduação na disciplina de
programação utilizando modelos de aprendizado de máquina supervisionado. Essa
predição busca identificar a diferença de performance do classificador quando
tratamos grupos demográficos diferentes. O desenvolvimento desse estudo poderá
favorecer o realinhamento das estratégias pedagógicas traçadas pelo docente para
atender as demandas de aprendizado do aluno de programação conforme a
predição de aprovação ou não na disciplina. No geral, a pesquisa busca explorar
técnicas de Aprendizagem de Máquina e Mineração de Dados para fazer
inferências, através da modelagem de perfis de programação dos estudantes.

Palavras-chave
Codebench. Análise. CRISP-DM. Aprendizado Supervisionado. Aprendizado de máquina.

Abstract. Computing courses, by their characteristics, contain a large group of


programming disciplines and these in turn have shown increasingly high failure
rates and, for this reason, several studies have been conducted to predict student
performance, to assist in decision making. This way, the present work seeks to
develop an algorithm for predicting the performance of undergraduate students in
the programming discipline using supervised machine learning models. This
prediction seeks to identify the difference in classifier performance when treating
different demographic groups. The development of this study may favor the
realignment of the pedagogical strategies outlined by the teacher to meet the
learning demands of the programming student according to the prediction of
approval or not in the discipline. Overall, the research seeks to explore Machine
Learning and Data Mining techniques to make inferences, by modeling student
programming profiles.

Keywords
Codebench. Analysis. CRISP-DM. Supervised Learning. machine learning.
3

1. Introdução

As transformações ocasionadas pelo avanço tecnológico, além de agilizar o processo de


globalização, enfatizam as mudanças ocasionadas no mercado de trabalho, o que tem se
tornado cada vez mais seletivo, exigindo dos trabalhadores, competências, habilidades
científicas e técnicas para lidar com a tecnologia. Essas exigências têm evidenciado a
necessidade de qualificação dos indivíduos, que por sua vez, tem buscado cada vez mais
ingressar no ensino superior como uma forma de, posteriormente, terem melhores condições de
vida e boas oportunidades de trabalho. (SILVA et al. 2014)

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)

Segundo a CES/CNE na resolução nº 5, de 16 de novembro de 2016 em seu Art. 5º,


apresenta que as competências e habilidades que estes indivíduos devem ter estão: identificar
problemas que tenham solução algorítmica; resolver problemas usando ambientes de
programação; compreender e explicar as dimensões quantitativas de um problema, dentre
outras.(BRASIL, 2016)

Para atender essas demandas, as disciplinas de programação são consideradas a base


para uma formação de boa qualidade nos cursos de computação, que segundo Helminen e
Malmi (2010), a programação é uma competência essencial nos cursos de graduação em
computação.

Para De Jesus (2021), cursos de computação enfrentam atualmente problemas com as


disciplinas de introdutórias de programação. Os alunos quando se depararam com estas
disciplinas, apresentam um sentimento de incapacidade quanto a programação, isso muitas
vezes ocorre devido ao conjunto de habilidades que a programação exige como, raciocínio
lógico, raciocínio lógico matemático, abstração de problemas computacionais.

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.

Como alternativa, algumas instituições têm adotado metodologias de aprendizagem


relacionadas ao modelo híbrido de ensino, fazendo uso de ferramentas de correção automática
de código em suas aulas presenciais. Nessas ferramentas, os professores direcionam atividades
para que os alunos construam as suas resoluções e quase que imediatamente recebam
feedbacks sobre seus erros e acertos. Isso acontece devido ao modelo de correção automática
de código que as ferramentas utilizam. Assim, um conjunto de dados ficam disponíveis
facilitando as pesquisas sobre mineração de dados educacionais. (VIVIAN, 2021)

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.1 Questões de pesquisa


Considerando as possibilidades do cruzamento dos dados correlatos para gerar
informações que auxiliem os docentes na identificação e criação de estratégias pedagógicas de
ensino, diversos pesquisadores como: Amra e Maghari (2018), Aguiar e Pereira (2018),
Rabelo, et. al. (2017) e Quille e Bergin (2018), tentam desenvolver métodos que amparem a
atuação pedagógica de ensino em disciplinas introdutórias de programação, com base em
análise de dados sob o auxílio do aprendizado de máquina.
Desse modo, esta pesquisa aborda as seguintes questões:
Questão de pesquisa 1 (QP01): Quais algoritmos de aprendizado de máquina
supervisionado podem ser utilizados para prever o 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?
Questão de pesquisa 2 (QP02): Quais as características demográficas são mais
importantes quando correlacionadas com atributos baseados em código?
5

1.2. Objetivo
1.2.1. Objetivo Geral

Desenvolver uma ferramenta para predição do desempenho dos alunos de graduação na


disciplina de programação, utilizando dados demográficos e atributos baseados nas interações
dos alunos com a ferramenta de programação, utilizando modelos de aprendizado de máquina
supervisionado.

1.2.2. Objetivo Específico


● Coletar e analisar os dados de uma ferramenta de correção automática de código;
● Treinar o modelo de predição no contexto geral da base de dados;
● Treinar o modelo de predição no contexto dos grupos específicos referente aos dados
demográficos;
● Avaliar o modelo de predição construído.

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.

Pereira, et al (2020) descreve em seu estudo que a previsão de desempenho prévio é


vital, o que pode criar uma gama maior de oportunidades para os professores intervirem e
apoiarem os alunos em suas dificuldades; porém, na maioria dos estudos, os modelos de
predição estudados só entregam soluções com análise de dados relacionadas a código, não
levando em consideração grupos de dados demográficos, que podem fornecer aos professores
melhores análises de quais fatores podem levar os acadêmicos ao fracasso ou ao sucesso.

Utilizar dados demográficos é importante porque fornecem informações valiosas sobre


as características dos alunos que podem afetar suas ações e comportamentos. Essas
informações são usadas para melhor entender o os fatores que levam os alunos a aprovação ou
reprovação em disciplinas introdutórias de programação. Dessa maneira, o desenvolvimento
desse estudo poderá favorecer o realinhamento das estratégias pedagógicas traçadas pelo
docente para atender as demandas de aprendizado do aluno de programação conforme a
predição de aprovação ou não na disciplina.

1.4 Estrutura do Trabalho


A pesquisa estrutura-se da seguinte forma: na seção 2, encontra-se o levantamento dos
conceitos relacionados ao tema deste estudo; na seção 3, os trabalhos relacionados; na seção 4,
como os modelos de aprendizado de máquina foram construídos, bem como, todo o processo
de modelagem; no item 6, os resultados obtidos a partir da abordagem técnica proposta; na
seção 7, uma discussão sobre as abordagens anteriores e a proposta por este estudo e, por fim,
na seção 8, a conclusão, bem como, as propostas de trabalhos futuros.
6

2. Referencial Teórico
2.1. Disciplinas introdutórias de programação

Alinhados às Diretrizes Curriculares Nacionais (DCNs) têm-se os referenciais de


formação para os cursos de graduação em computação, neste documento busca-se a integração
dos conhecimentos, atitudes e habilidades, para melhor orientar as competências que são
esperadas do egresso do curso. Seguindo esse pensamento, as disciplinas introdutórias à
programação surgem para atender um dos eixos de formação nos cursos de graduação em
computação.

Para entendermos melhor, as disciplinas de programação possuem três conceitos que


são utilizados como base para o desenvolvimento de competências exigidas nos egressos, que
são: linguagem de programação, lógica e algoritmos. Partindo do conceito de lógica, que é
uma maneira pela qual algumas instruções ou pressupostos são organizados em um algoritmo
para a viabilização de soluções e implantações de programas. Dessa forma, podemos entender
que lógica nada mais é do que estudar a correção do raciocínio colocando o pensamento em
ordem. Quanto aos algoritmos, podemos entender como sendo uma sequência lógica de passos
ordenados a fim de atingir um objetivo. E por fim, temos o conceito de linguagem de
programação, que se trata de ferramentas que são utilizadas para a implementação de software.

Com a apropriação desses conceitos podemos entender que, a construção de um


algoritmo faz-se necessário a construção de um raciocínio lógico, este sendo a habilidade
fundamental para o bom desempenho na solução do problema, em seguida é preciso fazer o uso
de linguagens de programação para tornar todo aquele raciocínio estruturado com o algoritmo
passível de transformação em um software. Devido a isto, as disciplinas introdutórias de
programação visam apresentar para os alunos os métodos para formalizar as soluções
propostas e abstraí-las em diversos níveis, o que permite assim compreensões universais das
soluções. DELGADO et al. (2005).
2.2. Ferramentas de Correção Automática de Código

As ferramentas de correção automática de código são softwares que recebem as


resoluções em formato de códigos-fonte que são desenvolvidos por alunos em disciplinas de
programação e são empregados como ferramentas de apoio ao processo pedagógico dos
professores. Essas ferramentas recebem as respostas das atividades propostas pelos professores
de programação e retornam de maneira imediata aos alunos um feedback com informações, se
o seu código está correto ou não. Esse retorno é realizado através das análises da comparação a
nível de código, entre a saída retornada com uma saída esperada.

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

O CodeBench é uma ferramenta de correção automática de código, que foi


desenvolvido pelo Instituto de Computação da Universidade Federal do Amazonas. Nela, o
professor consegue montar suas atividades e avaliações para que aconteçam no decorrer do
período letivo, com isso, os alunos conseguem interagir e resolver os problemas propostos.
Dessa maneira, ele registra todas as interações realizadas pelos alunos no ambiente de
desenvolvimento integrado ao CodeBench, durante suas tentativas de resolver os exercícios.

Nessa ferramenta é possível encontrar um ambiente integrado de desenvolvimento que


suporta as principais funcionalidades como: auto completar, salvamento automático, busca
substituição de strings, entre outros. Além de suportar linguagens de programação como: C,
C++, Java, Python, Lua e SQL. O Codebench conta com mais de 5300 exercícios cadastrados
em sua base, podendo ser usados pelos professores para compor os trabalhos de suas turmas.

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.

Para facilitar o entendimento sobre o L.A., Gasparini, Moissa, Kemczinski (2014)


propõe um modelo de referência baseado em 4 eixos: O quê, Quem, Por quê e Como. No
primeiro eixo temos os tipos de dados que serão coletados, que podem ser provenientes de
fontes institucionais de dados, ambientes de aprendizagem, redes sociais, etc. Já o segundo
eixo, refere-se a quem os resultados das análises são direcionados, aqui podemos ter, alunos,
professores, administradores de instituições, pesquisadores. É importante salientar que nesse
eixo cada um dos citados tem suas próprias perspectivas em relação aos resultados.

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.

Predição e Desenvolvimento de modelo de predição de desempenho do aluno com


Intervenção base em ações e realizações atuais, para fornecer indicativos que
possam precisar de uma atenção especial por parte dos professores.

Avaliação e Auxilia na avaliação do aprendizado do aluno com o intuito de


Feedback fornecer feedback imediato e adequado.

Personalização e Permite que os envolvidos no processo possam personalizar ambientes


Recomendação fornecendo uma melhor experiência de aprendizado, enfatizando a
busca do conhecimento através de mecanismos de recomendações e
assim, evitando a sobrecarga de informações.

Reflexão Permite que as informações possam ser comparadas entre alunos,


9

cursos e turmas possibilitando práticas de ensino e aprendizagem mais


eficazes.

Fonte: Adaptado de Gerón (2021)

2.4 Algoritmos de aprendizagem de máquina

Para o entendimento sobre algoritmos de aprendizagem de máquina, precisamos


contextualizar que machine learning é uma ciência que estuda a programação de computadores
para que estes possam aprender com os dados. Para Géron (2021), é o campo de estudo que
possibilita computadores adquirirem habilidades de aprender sem necessariamente
programá-los.

Gerón (2021) traz em seu livro os diversos tipos de sistemas de aprendizado de


máquina, que podem ser: supervisionado, não supervisionado, semi-supervisionado,
aprendizado por reforço, aprendizado online, aprendizado em batch, aprendizado baseado em
instâncias e aprendizado baseado em modelo. Para o autor, esses diversos sistemas podem ser
combinados para extrairmos melhores resultados.

Nos sistemas de aprendizado supervisionado, o conjunto de treinamento que é


fornecido contém dados de exemplo com resultados desejados que são usados durante o
processo de aprendizagem, estes são chamados de rótulos. Neste sistema, uma tarefa bastante
usada é a classificação, onde o treinamento acontece a partir de muitos exemplos baseados em
classes, subdivisões dos dados, e assim a máquina deve aprender a classificar novas entradas.
Outra tarefa que é bastante utilizada também é a regressão, onde podemos prever valores
numéricos alvo, a partir de um conjunto de características que chamamos de preditores. Para
esse tipo de treinamento é necessário fornecer um número expressivo de exemplos com
preditores e rótulos para obtermos resultados significativos.

Para o aprendizado supervisionado podemos citar alguns algoritmos:


● KNN: No k-Nearest Neighbors ou K-ésimo vizinho mais próximo, a partir de uma
instância de teste Q, o algoritmo encontra os K vizinhos mais próximos de Q no
conjunto de treinamento, em seguida a classe de Q é dada pela maior ocorrência de
classes entre os K vizinhos. (SOUCY, MINEAU, 2001)
● Regressão Logística: Na regressão logística o sistema tenta criar previsões precisas,
para isso ele usa modelos estáticos para determinar probabilisticamente o
acontecimento de um evento, mostrando a relação os dados. (FIGUEIRA, LOPES,
2006)
● SVM: O Support Vector Machine ou Máquinas de Vetores de Suporte, a partir de um
espaço n-dimensional ele constrói hiperplanos para classificar e regredir dados. Estes
vetores dependem de apenas um subconjunto de dados de treinamento. (AHMAD et al.,
2014)
● Naïve Bayes: Classificador multinomial, ele realiza classificações probabilísticas de
observação em classes pré-definidas. O Naive Bayes, tem como premissa a suposição
de independência entre as variáveis do problema. (KARIM, RAHMAN, 2013)
● Árvores de Decisão: O decision trees, subdivide progressivamente os dados em
conjuntos menores e específicos até atingirem um tamanho simplificado para ser
rotulado. O algoritmo basicamente toma decisões a partir de perguntas e respostas
10

booleanas e classifica um indivíduo conforme as respostas obtidas pelo conjunto de


perguntas formuladas. (KARIM, RAHMAN, 2013)
● Floresta Aleatória: Modelo baseado nas árvores de decisão, é utilizado usualmente para
classificação e regressão, trabalha muito bem com instância de dados de alta dimensão.
Venables e Ripley (2002)
● SGD: O Stochastic Gradient Descent, é um classificador eficiente para lidar com
conjunto de dados muito grandes, onde cada instância de treinamento é tratada de forma
independente (GÉRON, 2021).
Nos sistemas de aprendizado não supervisionado, o conjunto de treinamento não é
rotulado, o sistema tenta aprender sem um professor. Para esse sistema de aprendizado
podemos ter algoritmos de clusterização, Detecção de anomalias e de novidades, Visualização e
redução da dimensionalidade e Aprendizado de regras por associação.
● K-Means: Algoritmo de avaliação e clusterização de dados conforme as características
cedidas pelos próprios dados. Esse processo é baseado em análises e comparação entre
os valores numéricos dos dados, assim o algoritmo fornece automaticamente as
classificações sem a necessidade de intervenção humana ou pré-classificação.
(SINAGA, YANG, 2020)
● DBSCAN: Na Clusterização Espacial Baseada em Densidade de Aplicações com
Ruído, identifica clusters com formatos arbitrário e com tamanhos diferentes, separa os
ruídos dos dados e detecta clusters dentro de arranjos no conjunto de dados.
(VENTORIM, LUCHI, VAREJÃO, 2020)
● HCA: Na análise de cluster hierárquica, vários clusters possíveis são gerados, cada um
destes pode ser mesclado entre si, neste método não há necessidade de um número
inicial de clusters. Podem ter dois tipos: Aglomerativos, onde os elementos iniciam o
processo separados e vão aos poucos sendo agrupados e Divisivos, onde os elementos
começam todos juntos em um mesmo cluster, e vão sendo separados um a um. (JIA
et.al. 2015)
● One-class SVM: Este método aprende uma função de decisão para detecção de
novidades para classificar novos dados como semelhantes ou diferentes a partir de um
conjunto de treinamento. (MANAVITZ, YOUSEF, 2001)
● Floresta de Isolamento: Baseado em decision tree, ele divide o conjunto de dados em
suas partes a partir de valores limites aleatórios, continuando este processo
recursivamente até que cada ponto do dado esteja isolado. (NASCIMENTO et.al. 2021)
● ACP: Na análise de Componentes Principais, a variação dos dados nos componentes
extraídos são maximizados e ao mesmo tempo os erros de reconstrução e a perda de
informações são minimizados. O objetivo é manter os componentes principais mais
importantes e descartar os demais.( DINIZ et al. 2013)
● LLE: No Locally Linear Embedding ou método de incorporação de dimensionamento
não linear, busca um conjunto dos vizinhos mais próximos de cada ponto, a partir do
cálculo dos pesos definidos para cada ponto, esses pontos surgem pela combinação
linear de seus vizinhos. (LIU et al. 2013)

No sistema de aprendizado semi-supervisionado, o conjunto de dados é mesclado em


uma grande quantidade de instâncias não rotuladas e um número bem menor de instâncias
rotuladas, ou seja, os algoritmos irão trabalhar com dados parcialmente rotulados. Os
algoritmos que podem ser usados neste sistema, são combinações de algoritmos que usamos no
11

sistema de aprendizado supervisionado e não supervisionado. Um exemplo claro dessa


combinação é o DBNs, redes neurais de crenças profundas, que tem sua base nos componentes
não supervisionados e os RBMs, máquinas restritas de boltzmann, que são baseadas em
estruturas supervisionadas.

No sistema de aprendizado por reforço, o agente pode assistir o ambiente em questão,


selecionar, executar ações e obter recompensas que podem ser positivas ou negativas, estas são
baseadas em políticas que definem qual ação o agente deverá escolher em determinada
situação.

No aprendizado por ciclo ou aprendizado em batch, o sistema não tem a capacidade de


aprender incrementalmente, no treinamento deve ser usado todos os dados disponíveis o que
pode demorar muito tempo e consumir muitos recursos computacionais, sendo assim, suas
execuções acontecem offline, ou seja, primeiro treina a máquina, depois disso você coloca em
produção sem adquirir nenhum aprendizado a mais. Já no aprendizado incremental ou online, o
sistema é treinado de maneira incremental, fornecendo conjuntos de dados de maneira
sequencial, assim o sistema pode aprender a partir de novos dados em tempo real.

Quando falamos de sistemas de aprendizado em instâncias, o sistema aprende por meio


da memorização e em seguida desse processo ele generaliza novos casos, para isso, ele usa
medidas de similaridade para comparar com os conjuntos de dados aprendidos. Enquanto no
sistema de aprendizado baseado em modelo, o sistema pega um conjunto de dados e cria um
modelo, a partir desse modelo ele começa a fazer predições.

2.6. CRISP-DM

O Cross-Industry Standard Process for Data Mining (CRISP-DM), segundo Chapman


et al. (2000), é uma metodologia que é descrita como um modelo de processos hierárquicos. O
modelo de referência do CRISP-DM fornece uma visão geral do ciclo de vida de projetos de
mineração de dados e é composto por seis etapas, como pode ser observado na Figura 1.

Figura 1. Visão geral do ciclo de vida do CRISP-DM.


12

Fonte: Elaborado pelo autor (adaptado de Colpani (2019))

A primeira etapa do CRISP-DM é chamada de Business understanding ou


Compreensão do negócio. Essa é a etapa inicial do processo, essa é a construção do plano de
projeto, é onde deve ocorrer uma revisão sobre todos os recursos disponíveis e necessários para
a mineração de dados. É importante definir quais os tipos de dados que estão sendo minerados
e quais os critérios devem ser atingidos para alcançar os objetivos da análise.

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.

Na etapa quatro, tem-se o Modeling ou modelagem. Nessa etapa é necessário escolher


as técnicas de modelagem, construir o caso de teste e por último o modelo. Para escolher a
técnica de modelagem é necessário observar os dados e entender qual se encaixa melhor.
Existem diversos tipos que se adaptam a vários cenários como: Regressão linear, Tabela de
decisão, Máquina de vetor de suporte, redes neurais e outros. (AGRAWAL, 2014)

Na etapa cinco, chamada de Evaluation ou Avaliação, é onde os resultados obtidos da


etapa de modelagem são analisados e comparados com os objetivos definidos nas etapas de
compreensão (AZEVEDO; SANTOS, 2008). É nesse momento, que ocorre uma revisão geral
de tudo o que foi feito, antes de avançar para a etapa final; caso alguma informação esteja
inconsistente ou não tenha atingido os objetivos esperados, é importante rever o que foi
construído ao longo das etapas anteriores.

E finalmente, na etapa seis, tem-se o Deployment ou Implantação. Essa etapa consiste


na disponibilização de uma guia de usuário que descreve todo o processo de análise realizado
como também o processo de implantação, monitoramento e manutenção (WIRTH; HIPP,
2000).
13

3 Trabalhos Relacionados

O processo de descoberta de padrões que podem ser úteis para a compreensão ou


desenvolvimento de alguma atividade é conhecido como Mineração de Dados. Essa área é
extremamente abrangente e possui aplicações em várias áreas, quando fala-se em mineração de
dados educacionais, o foco está na compreensão dos dados coletados em contextos
educacionais produzidos por estudantes e professores. Os problemas de pesquisa mais
comumente trabalhados são a detecção de alunos com chance de evasão e a previsão do
desempenho final de alunos em cursos de graduação a distância ou em disciplinas de
programação. (PEREIRA 2021)

Pereira (2019), em sua pesquisa, montou um modelo preditivo para inferir o


desempenho dos alunos usando aprendizagem de máquina, nesse processo, foram utilizados 20
atributos de código, coletados em ambientes de correção automática de código. A seleção
desses atributos seguiu o processo de engenharia de variáveis, o seu objetivo era montar o perfil
de programação dos alunos. Os algoritmos de Random Forest e Decision Tree foram utilizados
em seu estudo e para métricas de avaliação foram utilizados: precision, recall e accuracy.
Como resultado obteve-se 74% de accuracy na tarefa de predição de reprovados ou aprovados
em uma base de dados balanceada.

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.

Em uma revisão sistemática da literatura, Pereira (2020) identifica que as ferramentas


mais utilizadas nos estudos para construção de modelos preditivos são: o scikit-learn, o weka e
o R. Já os algoritmos mais utilizados são: random forest, árvores de decisão, naive bayes,
máquinas de vetores de suporte e redes neurais. Em sua grande maioria os estudos tentam
prever aprovação ou reprovação de alunos com atributos baseados em códigos. Ele relata ainda
em seu estudo que, os objetivos são: modelar como o estudante lida com os erros, com prazos,
o número de tentativas submetidas e a corretude dos códigos, o padrão de digitação dos
códigos, submissões e comportamentos de procrastinação. Em relação às métricas, as mais
utilizadas são: precision, recall, accuracy e f1.

Assim, o presente estudo utiliza dados demográficos de estudantes correlacionados com


atributos baseados em código que são gerados a partir das interações dos mesmos estudantes
em ferramentas de correção automática de códigos para prever aprovação ou reprovação destes
em disciplinas introdutórias de programação com uso de modelos preditivos.
14

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.

Para a construção e avaliação dos modelos de aprendizado de máquina foram seguidas


as seguintes etapas extraídas a partir da modelo CRISP.DM, aqui representadas conforme
apresentado na figura 2.

Figura 2. Etapas da metodologia.

Fonte: Elaborado pelo autor

O CRISP-DM é um modelo de processo utilizado para aprimorar e obter mais agilidade


no processamento de dados. Apesar de diversos modelos existirem há muito tempo, apenas
18% das pessoas que trabalham com ciências de dados seguem explicitamente um padrão
(SALTZ, 2018 apud SCHRÖER; KRUSE; GÓMEZ, 2021). No modelo CRISP-DM as etapas
de: compreensão do negócio, compreensão dos dados, preparação dos dados, modelagem,
avaliação e implantação, são seguidas para que os resultados sejam alcançados. Para este
projeto, foram seguidas as etapas de compreensão do negócio e dos dados, preparação dos
dados, modelagem e avaliação.

4.1. Compreensão dos Dados

Os dados utilizados neste estudo foram coletados através da ferramenta de correção


automática de código CodeBench da Universidade Federal do Amazonas, nas disciplinas
introdutórias de programação, durante os anos de 2016 a 2021 e dentro desse período divididos
15

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.

Figura 3. Quantidade de dados coletados no período de 2016 a 2021 pelo CodeBench.

Fonte: https://codebench.icomp.ufam.edu.br/dataset/

Para o estudo, os dados coletados compreendem o período entre 2016.1 a 2019.1 e


possuem informações demográficas dos estudantes, dados das atividades e das submissões
realizadas por estudantes. Os dados demográficos dos estudantes são informações sobre: sexo,
estado civil, trabalho, tipo de escola que estudou no ensino médio e tantas outras informações.
Esses dados fornecem características importantes sobre cada estudante e que serão exploradas
nas seções seguintes.

O método utilizado na base de dados coletada, divide o conteúdo do semestre em sete


módulos, sendo eles: Variáveis e estrutura sequencial de programação, estrutura de
programação condicional composta, estruturas condicionais encadeadas, estrutura de
programação de repetição por condição, vetores e strings, estrutura de programação de
repetição por contagem e matrizes.

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

Figura 4 - Fluxo de atividades por turma do CodeBench

Fonte: Elaborado pelo autor, 2022

Abaixo, na Tabela 1, é apresentado as estatísticas de cada base de dados agrupada por


ano, onde contém informações sobre o número total de estudantes, número total de submissões
de atividades e o número total de atividades propostas, incluindo as avaliações.

Tabela 1 - Quantidade de informações em cada base de dados

2016.1 2016.2 2017.1 2017.2 2018.1 2018.2 2019.1

Estudantes 535 176 482 190 486 190 507

Submissões 139003 35978 112263 26081 137519 43837 146325

Atividades 805 557 1441 659 1732 1000 1735

Fonte: Elaborado pelo autor, 2022

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.

Antes de iniciar o processo de preparação é necessário ter conhecimento dos dados,


para entender sua relevância e quais poderão ter impacto significativo no desempenho dos
algoritmos. Neste estudo, foram utilizadas três bases de dados distintas que contêm
informações sobre as atividades propostas pelos professores durante o processo de
17

ensino-aprendizagem, apresentado no Quadro 2.

Quadro 2 - Colunas da base de dados de atividades

Coluna Descrição

periodo Descrição do período (ano e semestre) no qual a atividade ocorreu.

turma Código da turma na qual a atividade foi aplicada.

codigo Código da atividade.

título Título da atividade (descrição).

data_inicio Data e hora do início (liberação) da atividade.

data_termino Data e hora do encerramento da atividade (prazo de entrega).

linguagem Linguagem de programação utilizada nos exercícios (questões) da atividade.

tipo Tipo da atividade: exam (avaliação) ou homework (trabalho ou lista de


exercícios).

peso Peso da atividade na média final do estudante.

n_blocos Quantidade de blocos de exercícios existentes na atividade.

blocos Lista com os blocos de exercícios.

Fonte: Elaborado pelo autor, 2022

No Quadro 3, contém as informações demográficas dos estudantes, onde pode ser


observado dados como: período, a turma, turno, curso, se trabalha, se tem acesso a interner, se
possui computador ou é compartilhado, ano do termino do ensino médio, sexo, estado civil, se
possui filhos, dentre outros.

Quadro 3 - Colunas da base de dados de estudantes

Coluna Descrição

periodo Descrição do período (ano e número do semestre) no qual a turma


18

ocorreu.

turma Código da turma (disciplina) que o estava matriculado.

codigo Código numérico único que identifica o estudante.

curso_id Código numérico único do curso de graduação em que o estudante


estava matriculado.

curso_nome Descrição do curso de graduação em que o estudante estava


matriculado.

instituicao_id Código numérico único da instituição de ensino superior na qual o


estudante estava matriculado.

instituicao_nome Descrição da instituição de ensino superior (nome) na qual o estudante


estava matriculado.

escola_nome Descrição da instituição de ensino médio (nome) da qual o estudante é


proveniente.

escola_tipo Tipo da instituição de ensino médio da qual o estudante é proveniente.

escola_turno Turno no qual o estudante estudou.

escola_ano_grad Ano de graduação do estudante no ensino médio.

sexo Sexo do estudante.

programa Booleano indicando se o estudante programa ou não.

trabalha Booleano indicando se o estudante trabalha ou não.

internet Booleano indicando se o estudante possui internet ou não.

tem_filhos Booleano indicando se o estudante possui ou não.

Fonte: Elaborado pelo autor, 2022


19

No Quadro 4, contém informações das submissões realizadas pelos estudantes durante


as tentativas de produção de códigos. Esses dados podem variar conforme cada aluno
desenvolve suas atividades.

Quadro 4 - Colunas da base de dados de submissões

Colunas Descrição

periodo Descrição do período (ano e número do semestre).

turma Código da turma (disciplina) que o estudante estava matriculado.

estudante Código numérico único que identifica o estudante.

atividade Código numérico único que identifica a atividade.

exercicio Código numérico único que identifica o exercício (questão).

tempo_foco Tempo em segundos em que o estudante interage com o editor


desconsiderando os intervalos de interações superiores a 5 min
(inatividade).

tempo_total Tempo total em segundos em que o estudante interagiu com o editor do


codemirror, dentro do intervalo de duração da atividade.

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.

n_erros Quantidade erros acusados pelo interpretador python durante submissões


ou testes da solução.

t_execucao Tempo em segundos que a solução do estudante levou para executar os


casos de testes.

nota_final Maior nota obtida por um estudante nas tentativas de solucionar um


exercício.

acertou Booleano indicando se o estudante conseguiu acertar a questão.

lloc Número total de linhas lógicas de código.

prints Quantidade total de ocorrências da função print (saídas).

assignments Quantidade total de operações de atribuição (incluindo atribuição


20

combinada com outros operadores).

Fonte: Elaborado pelo autor, 2022

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.

Figura 5 - Relacionamento entre bases de dados

Fonte: Elaborado pelo autor, 2022

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

onde realiza as alterações de forma sequencial e retorna um objeto modificado.

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.

Quanto às características demográficas dos estudantes selecionados, observou-se que


algumas tinham muitos dados ausentes, assim sendo descartadas as seguintes características:
escola_nome, escola_turno, escola_ano_grad, empresa_nome, trabalha_ano_inicio,
trabalha_ano_termino, outra_graduacao, outra_graduacao_curso, outra_graduacao_ano_inicio,
outra_graduacao_ano_fim, ano_nascimento. Em contra partida, algumas que no entendimento
inicial impactaram diretamente no estudo, foram povoadas: escola_tipo, computador,
computador_compartilhado, internet, programa, trabalha, sexo, estado_civil, filhos. Já as
demais características, como periodo, turma, codigo, curso_id, instituicao_id não foram usadas
por serem apenas identificadores.

Além das tratativas citadas anteriormente, foram criados grupos de características


demográficas para que pudesse melhorar a compreensão no processo de comparação dessas.
Assim, foram criados 120 grupos, onde cada grupo tinha um conjunto de 3 características
demográficas associadas. Essa criação foi definida através de uma combinação simples, que
segundo Coutinho (2015), é um tipo de agrupamento da análise combinatória, que gera
combinação de n elementos tomados de k em k.

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.

Foi construída uma função para receber os parâmetros relacionados a todas as


submissões realizadas pelo estudante e as atividades da turma. Nesse momento é separado
também as atividades da turma em duas listas (class_exams) com as avaliações e
(class_homeworks) com as atividades de casa. Com isso é possível aplicar os respectivos pesos
citados anteriormente para a geração da característica alvo. Ao final, as duas notas foram
somadas, para que possa ser retornado a nota final obtida pelo estudante ao final do semestre.

Quanto à questão relacionada à previsão da aprovação ou reprovação do estudante, foi


criada uma coluna chamada approved, que guarda o valor booleano 0 ou 1, onde, 1 significa
aprovado e 0 reprovado. Ela será usada como característica alvo para o treinamento dos
22

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.

Vale ressaltar que dentro dessas características selecionadas estão as colunas,


failFewAtpt, a taxa de erro do número de submissões abaixo da mediana geral da turma,
succFewAtpt, a taxa de acerto do número de submissões abaixo da mediana geral da turma,
failManyAtpt, a taxa de erro do número de submissões igual ou maior que a mediana geral da
turma, já a succManyAtpt, a taxa de acerto do número de submissões igual o maior que a
mediana da turma, que foram geradas a partir da coluna n_submissoes e a coluna acertou.

4.3. Modelagem e Medidas de avaliação

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.

Dessa maneira, conhecendo as características e o alvo a ser previsto, é importante


separar a base de dados, pois ajudará no cálculo das métricas definidas. Para isso, a biblioteca
scikit-learn foi utilizada para auxiliar no processo de preparação do modelo e nesta, foram
23

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:

Equação 1: é representada pela divisão entre o número de verdadeiros positivos (TP)


pela soma entre dos verdadeiros positivos (TP) e falso positivos (FP):
𝑇𝑃
𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 = 𝑇𝑃 + 𝐹𝑃
(1)

Equação 2: é composta pela divisão entre o número de verdadeiros positivos (TP)


pela soma entre verdadeiros positivos (TP) e falsos negativos (FN):
𝑇𝑃
𝑟𝑒𝑐𝑎𝑙𝑙 == 𝑇𝑃 + 𝐹𝑁
(2)

Equação 3: é a soma entre o número de verdadeiros positivos (TP) e verdadeiros


negativos (TN) dividido pela soma entre verdadeiros positivos (TP), falsos positivos
(FP), verdadeiros negativos (TN) e falsos negativos (FN):
𝑇𝑃 + 𝑇𝑁
𝑎𝑐𝑐𝑢𝑟𝑎𝑐𝑦 = 𝑇𝑃 + 𝐹𝑃 + 𝑇𝑁 + 𝐹𝑁
(3)

Equação 4: é representada pelo dobro da precision vezes a recall dividido pela


precision mais a recall:
𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 × 𝑟𝑒𝑐𝑎𝑙𝑙
𝑓1 = 2 × 𝑝𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 + 𝑟𝑒𝑐𝑎𝑙𝑙
(4)

Na lista model_pipeline os algoritmos são instanciados apenas com um random_state


padrão, para evitar variações nos resultados das métricas durante o treinamento, de maneira
subsequente, inicia-se o processo de treinamento e cálculo das métricas de avaliação definidas
anteriormente. Assim, são criadas cinco listas onde são guardadas as informações sobre as
métricas de cada modelo. Depois da criação das listas, cada modelo foi percorrido e treinado
separadamente, usando os valores de treinamento citados anteriormente. Logo após esse
processo, é realizada a predição com os valores e armazenados na variável de predição. Após a
24

conclusão do processo, é realizado o cálculo das métricas e armazenado o resultado em suas


respectivas listas.

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

Tabela 2 - Resultado das métricas dos Modelos Treinados


Modelo Accuracy Precision Recall F1

Decision Tree 0.676063 0.660038 0.670075 0.663694

K Neighbors 0.678885 0.646725 0.720269 0.680678

Logistic Regression 0.714476 0.679547 0.759098 0.716344

Naive Bayes 0.677700 0.617590 0.850165 0.712288

Random Forest 0.727700 0.717519 0.707958 0.712288

SGD 0.672929 0.644828 0.701864 0.662607

SVC 0.728861 0.706880 0.735365 0.719978

Fonte: Elaborado pelo autor, 2022


Assim, analisando a matriz de confusão desses dois modelos apresentada na figura 6, é
possível ver os resultados individualizados dos treinamentos. Para o resultado da accuracy, vale
observar que o número de TP e TN tiveram uma variedade de resultados, isso quer dizer, sem
discrepância entre o número de acertos. A precision pode ser observada quando vemos o
número de TP em comparação ao número de FP, assim conseguimos responder, de todos os
aprovados classificados como positivos, quantos realmente são positivos. Já a recall é
observada quando olhamos para o número de TP em relação ao número de FN, assim,
conseguimos observar, de todos os aprovados que realmente são verdadeiros, quantos foram
identificados corretamente pelo modelo. Dessa maneira, é necessário observar as suas
diagonais, a principal representa os valores corretamente preditos enquanto que a secundária
representa os valores preditos incorretamente.

Figura 6 - Matriz de Confusão dos Modelos Treinados

Fonte: Elaborado pelo autor, 2022


26

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.

Analisando os resultados da comparação da Accuracy gerada nos modelos, podemos


observar que os mesmos algoritmos citados anteriormente tiveram uma maior expressividade
nos resultados, essa métrica é uma forma de visualizar de maneira muito simplificada; pois,
cruza todas as informações da matriz de confusão de maneira a gerar um valor a partir da
divisão entre todos os acertos pelo total de dados da base. Conforme apresentado na Figura 7.

Figura 7 - Comparação de Accuracy com cross validation

Fonte: Elaborado pelo autor, 2022

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.

Figura 8 - Variação da Precision e Recall do modelo Random Forest

Fonte: Elaborado pelo autor, 2022


Para possibilitar uma outra análise, é montado a curva ROC que é uma ferramenta
comumente utilizada em classificadores binários, onde são comparados a taxa de verdadeiro
positivo (TP) em relação a taxa de falso positivo (FP). No resultado, figura 9, é possível
observar um crescimento acentuado até 0.6 do TP e depois começa a formar uma curva até se
estabilizar. Assim, essa curva preenche boa parte do gráfico, ou seja, quanto mais próximo a
curva estiver do canto superior esquerdo, melhor é o desempenho do algoritmo.
28

Figura 9 - Taxa de TP e FP do modelo Random Forest

Fonte: Elaborado pelo autor, 2022


Ao final de todo o processo, os resultados das métricas tiveram bons resultados, como
apresenta a tabela 3. A accuracy retornou um valor de 0.745816 se comparado com o resultado
anterior, teve um aumento de 0.018, a precision retornou um valor de 0.731892 se comparado
com o resultado anterior, teve um aumento de 0.014, a recall retornou um valor de 0.739891 se
comparado com o resultado anterior, teve um aumento de 0.031, e o f1 retornou um valor de
0.73587 se comparado com o resultado anterior, teve um aumento de 0.023, e 0.745572 com
área da curva ROC.

Tabela 3 - Métricas de avaliação do modelo

Modelo AUC Accuracy Precision Recall F1

Random Forest 0.745572 0.745816 0.739891 0.739891 0.735870

Fonte: Elaborado pelo autor, 2022

Já se formos analisar a matriz de confusão, tive um aumento expressivo nos valores de


675 para TP que em comparação com o resultado anterior, teve um aumento de 29, 250 para
FN que em comparação com o resultado anterior, teve um decrescimento de 11, 240 para FP
que em comparação com o resultado anterior, teve um decrescimento de 29, e 747 para TN que
em comparação com o resultado anterior, teve um aumento de 11. Conforme pode ser
observado na figura 102.
29

Figura 10 - Matriz de confusão do modelo random forest

Fonte: Elaborado pelo autor, 2022

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.

Figura 11 - Correlação das características

Fonte: Elaborado pelo autor, 2022

Mesmo assim, tendo baixas correlações, foi realizado o agrupamento de algumas


características demográficas com o objetivo de observar o comportamento delas com relação à
característica alvo do estudo. Os grupos foram criados a partir do uso de combinação simples.
Nesse momento foram gerados 120 grupos. Depois de todo o processo de agrupamento,
pode-se observar que os grupos, 60 composto com as características, computer,
shared_computer e techical_school, o grupo 81 composto com as características, internet,
shared_computer e techical_school e o grupo 86 composto com as características, male,
program e public_schools e, destacaram obtendo resultados mais elevados nas 4 métricas
31

trabalhadas no estudo. Como pode ser visto na tabela 4.

Tabela 4 - Métricas de desempenho por grupo de características.

Modelo AUC Accuracy Precision Recall F1

Grupo 86 0.743888 0.744247 0.731522 0.735519 0.733515

Grupo 81 0.744345 0.744770 0.732824 0.734426 0.733624

Grupo 60 0.737510 0.737971 0.725983 0.726776 0.726379

Fonte: Elaborado pelo autor, 2022

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.

Quadro 5 - Características selecionadas

Colunas Descrição

failFewAtpt Taxa de erro com poucas tentativas de submissões.

succFewAtpt Taxa de acerto com poucas tentativas de submissões.

failManyAtpt Taxa de erro com muitas tentativas de submissões.

succManyAtpt Taxa de acerto com muitas tentativas de submissões.

assignNoAtpt Quantidade de questões propostas não submetidas pelo estudante


pelo número total de questões.

individualAtpts Questões resolvidas pelo número total de questões submetidas pelo


aluno.

generalAtpts Questões resolvidas pelo número total de questões.

programmer Informa se o aluno já programou.

public_School Informa se o aluno tem computador compartilhado

male Informa se o aluno é do sexo masculino ou não.


32

approved Informa se o aluno foi aprovado.

Fonte: Elaborado pelo autor, 2022

Como resultado, fica claro que os classificadores demográficos têm graus de


importância diferentes quando relacionado à nossa característica alvo, o que impacta
diretamente nos resultados de predição do modelo, por isso é importante validar quais
características são selecionadas, a fim de obter melhores resultados para a predição de alunos
aprovados ou não em disciplinas de introdutórias de programaçã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.

Figura 12 - Chamada do modelo Random Forest dentro da aplicação

Fonte: Elaborado pelo autor, 2022


Para que os usuários pudessem fazer uso da aplicação foi necessário fazer o deploy da
aplicação na plataforma vercel. Na figura 12 é possível ver a primeira tela da aplicação.
33

Figura 12 - Fazendo upload das bases para a aplicação no vercel.

Fonte: Elaborado pelo autor, 2022

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

Figura 13 - Retorno da aplicação após a análise das bases.

Fonte: Elaborado pelo autor, 2022


Por não fazer parte do objeto de estudo da pesquisa, não será detalhada como a
aplicação foi construída, partindo do pressuposto que ela foi criada apenas para dar celeridade
ao acesso às informações e não para contribuir com os modelos de aprendizado de máquina e
com o resultado das predições.
35

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.

8.1. Trabalhos futuros


Neste estudo, foi utilizado o codebench como ferramenta coletora de dados para a
submissão e geração de resultados nos modelos, assim, como trabalhos futuros pretende-se
realizar novos testes utilizando novos dados aplicados em outras instituições de ensino, para
validar a generalidade do modelo criado, bem como, atualizar o cálculo do conceito de
aprovação, pois no ano de 2022, a ferramenta vem utilizando outro padrão de atividades por
37

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

AGRAWAL, A. DESHPANDE, P. D., CECEN, A., BASAVARSU, G. P., CHOUDHARY, A.


N., KALIDINDI, S. R. Exploration of data science techniques to predict fatigue strength of
steel from composition and processing parameters. Integrating Materials and Manufacturing
Innovation, v. 3, n. 1, p. 90-108, 2014.

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.

BOSSE, Y.; GEROSA, M. A. As disciplinas de introdução à programação na USP: um estudo


preliminar. In: Anais dos Workshops do Congresso Brasileiro de Informática na Educação.
[S.l.: s.n.], 2015

BRASIL. Ministério da Educação. Conselho Nacional de Educação. Câmara de Educação


Superior. Resolução Nº 5, de 16 de novembro de 2016 . Brasília, 2016.

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.

COUTINHO, J. L. da E,. Matemática para o ensino do conceito de combinação simples.


Programa de Pós-graduação em Educação. Dissertação (mestrado) - Universidade Federal da
Bahia. Salvador, 2015.

DAMASCENO, Ieza; CARNEIRO, Murillo. Panorama da Evasão no Curso de Sistemas de


Informação da Universidade Federal de Uberlândia: Um Estudo Preliminar. Brazilian
Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação -
SBIE), [S.l.], p. 1766, out. 2018. ISSN 2316-6533.DE JESUS, H. O.; RODRIGUEZ, L. C.;
JUNIOR, A. O. C. Predição de Evasão Escolar na Licenciatura em Computação. Revista
39

Brasileira de Informática na Educação, v. 29, p. 255-272, 2021.

DELGADO, C., XEXEO, J. A. M., SOUZA, M., RAPKIEWICZ, C. E., Junior,J.C.P.


Identificando competências associadas ao aprendizado de leitura e construção de algoritmos.
In: XXV SBC, Unisinos, São Leopoldo,RS, 2005.

DINIZ, F. A., NETO, F. M. M., JÚNIOR, F. D. C. L., & FONTES, L. M. O. RedFace: um


sistema de reconhecimento facial baseado em técnicas de análise de componentes principais e
autofaces. Revista Brasileira de Computação Aplicada, v. 5, n. 1, p. 42-54, 2013.

FIGUEIRA, C.V., LOPES, S. R. C. Modelos de Regressão Logística. LUME - Repositorio


Digital da UFRGS. < http://hdl.handle.net/10183/8192 >, Acesso em: 15 abr. 2022

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.

GASPARINI, I., MOISSSA, B., KEMCZINSKI, A. "Learning Analytics: um mapeamento


sistemático." TISE2014-Taller International de Software Educativo-XIX Conferência
Internacional sobre Informática na Educação. 2014.

GÉRON, Aurélien. Mãos à obra: aprendizado de máquina com Scikit-Learn, Keras e


TensorFlow. Tradução de Cibelle Ravaglia. 2. ed. Kindle, 2021. E-book.

GIL, A. C. Como elaborar projetos de pesquisa. - 4. ed. - São Paulo: Atlas, 2002.

GIRAFFA, M. M. L; MORA, M. C. Evasão na disciplina de algoritmo e programação: um


estudo a partir dos fatores intervenientes na perspectiva do aluno. III Conferência
Latinoamericana sobre el Abandono en la Educación Superior, 2013.

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.

KRZYZANOWSKI, L. P. Desempenho Acadêmico em Disciplinas de Algoritmo e


Programação e a Evasão nos cursos de licenciatura em computação. Jandaia do Sul, 2019.

LENGEL, J. Education 3.0: Seven Steps to Better Schools. Teachers College, Columbia
University, NY, 2012.

LIMA, R. P. P. Avalanche neuronal em redes de neurônios estocásticos tipo integra-dispara


com topologia Watts-Strogatz. Diss. Universidade de São Paulo, 2021.

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.

MANEVITZ, L. M.; YOUSEF, M. One-class SVMs for document classification. Journal of


machine Learning research, v. 2, n. Dec, p. 139-154, 2001.

NASCIMENTO, R. S. F. BARBOSA, B. H. G. VARGAS, R. E. V., DOS SANTOS, I. H. F.


Detecção de anomalias em poços de petróleo surgentes com stacked autoencoders. In:
Simpósio Brasileiro de Automação Inteligente-SBAI. 2021.

NETO, W. C. B.; SCHUVARTZ, A. A. Ferramenta Computacional de Apoio ao Processo de


Ensino-Aprendizagem dos Fundamentos de Programação de Computadores. In: Simpósio
Brasileiro de Informática na Educação, 2007.

PEREIRA, A, F, S., CARVALHO, L. S. G., SOUTO, E. Predição de evasão de estudantes


non-majors em disciplina de introdução à programação." Anais dos Workshops do Congresso
Brasileiro de Informática na Educação. Vol. 8. No. 1. 2019.

PEREIRA, F. D; SOUZA, L. M.; OLIVEIRA, E. H. T.; OLIVEIRA, D. B. F.; CARVALHO, L.


S. G. Predição de desempenho em ambientes computacionais para turmas de programação: um
Mapeamento Sistemático da Literatura. In: SIMPÓSIO BRASILEIRO DE INFORMÁTICA
NA EDUCAÇÃO, 31. Online. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação,
2020.

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.

POLIT, D.F.; BECK, C.T.; HUNGLER, B.P. Fundamentos de pesquisa em enfermagem:


métodos, avaliação e utilização. 5. ed. São Paulo: Artmed; 2004.

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.

RABELO, H., BURLAMAQUI, A., VALENTIM, R., RABELO, S. S. D., MEDEIROS, S.


Utilização de técnicas de mineração de dados educacionais para predição de desempenho de
alunos de EaD em ambientes virtuais de aprendizagem. Brazilian Symposium on Computers in
41

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

ROBINS, A. V. Novice programmers and introductory programming. In: The Cambridge


Handbook of Computing Education Research. Cambridge: Cambridge University Press, 2019.

SALTZ, J., HOTZ, N., WILD, D.,STIRLING, K. Exploring Project Management


Methodologies Used Within Data Science Teams Orleans, LA, USA, August 16-18, 2018. 24th
Americas Conference on Information Systems, AMCIS 2018, New Orleans, LA, USA,
Association for Information Systems. 2018.

SCHOEFFEL, P.; WASLAWICK, R.; RAMOS, V. A method to predict at-risk students in


introductory computing courses based on motivation. Dissertação (Doutorado em Ciência da
Computação) — Universidade Federal de Santa Catarina, Manaus, 2018.

SCHOEFFEL, P.; WASLAWICK, R.; RAMOS, V. A method to predict at-risk students in


introductory computing courses based on motivation. Dissertação (Doutorado em Ciência da
Computação) — Universidade Federal de Santa Catarina, Manaus, 2018. 15

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.

VENTORIM, I; LUCHI, D; VAREJÃO, F. Um método de amostragem tendenciosa para


aplicação do DBSCAN. In: ENCONTRO NACIONAL DE INTELIGÊNCIA ARTIFICIAL E
COMPUTACIONAL (ENIAC), 17. , 2020, Evento Online. Anais [...]. Porto Alegre: Sociedade
42

Brasileira de Computação, p. 199-210, 2020.

VIVIAN, R. L. et al. Mineração de dados educacionais e análise de sentimentos em ambientes


virtuais de aprendizagem: um mapeamento sistemático Educational data mining and sentiment
analysis in virtual learning environments: a systematic mapping. EAD em Foco. Rio de Janeiro,
RJ. Vol. 12, n. 2 (2022), e1786, p. 1-15, 2022.

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.

Você também pode gostar