| Resumo |
As disciplinas de programação de computadores, embora fundamentais, são desafiadoras para estudantes ingressantes devido ao conhecimento prévio heterogêneo. Mesmo com o uso de Ambientes de Correção Automática de Código (ACACs) para aliviar a carga de trabalho dos professores, a tarefa de criar listas de exercícios extraclasse com dificuldade crescente e adequada aos diferentes perfis de alunos continua sendo um grande desafio. A seleção manual de exercícios é inviável em turmas grandes e diversas. Diante disso, este projeto de pesquisa insere-se no objetivo maior de desenvolver sistemas de recomendação automática de exercícios para proporcionar uma experiência de aprendizagem personalizada. Este estudo, especificamente, está focado em investigar o potencial da aplicação de técnicas de mineração de dados e processamento de linguagem natural para definir e extrair características que representem o nível de dificuldade dos exercícios a partir de seus códigos-fonte de solução. A metodologia adotada compreende as seguintes etapas: primeiro, um levantamento bibliográfico para entender as estratégias existentes para inferir o nível de dificuldade de um exercício a partir do código; segundo, a coleta e catalogação de dados das soluções submetidas por estudantes no ACAC BOCA do Departamento de Informática (DPI)/ da Universidade Federal de Viçosa (UFV) entre 2014 e 2021 – são dados referentes a exercícios de programação de uma disciplina introdutória do curso de Ciência da Computação; terceiro, foi realizada uma análise exploratória dos códigos-fonte para identificar padrões úteis à inferência de dificuldade, utilizando técnicas de mineração de dados ; e, por fim, foram aplicadas e avaliadas, de forma preliminar, soluções automáticas baseadas em aprendizado de máquina na tarefa de inferir automaticamente a dificuldade de uma questão a partir do código-fonte contendo a solução. Conclui-se, então, que este estudo tem o potencial de gerar uma contribuição relevante para as áreas de Mineração de Dados e Processamento de Linguagem Natural, além de fornecer uma base sólida para futuros sistemas de recomendação, incluindo o contexto de personalização de exercícios de programação para um processo de ensino-aprendizagem mais adaptável e/ou ajustável as diferentes realidades dos estudantes. |