Geração de questões de programação baseada em templates e IA generativa - Santana, Abner; Silva, Francisco Genivan; Souza, Jadson Lucas Gomes; Dantas, Júlio César da S.; Aranha, Eduardo Henrique da Silva (Anais do Workshop de Informática na Escola (WIE); 2025: Anais do XXXI Workshop de Informática na Escola, 2025)
Ensinar programação é uma tarefa complexa devido à própria natureza do assunto. Há uma necessidade constante de que os alunos pratiquem por meio de questões para absorver o conteúdo, criando uma alta demanda sobre os professores. Este artigo visa automatizar esse processo utilizando Modelos de Linguagem de Grande Escala (LLMs), aprimorando o aprendizado de maneira personalizada. Estudos fundamentais sobre geração automática de questões foram baseados em sistemas baseados em regras e correspondência de padrões; avanços recentes empregam técnicas de processamento de linguagem natural e aprendizado profundo para produzir questões mais diversificadas e sensíveis ao contexto, sendo que os LLMs tornaram-se uma abordagem amplamente adotada e relevante para este campo. O sistema busca fornecer questões coerentes e contextualizadas com base em tópicos específicos, respeitando restrições pedagógicas que garantem o desenvolvimento gradual dos conceitos abordados. As questões foram geradas seguindo um modelo baseado em templates, permitindo maior controle tanto sobre a qualidade quanto sobre a variedade dos exercícios. Técnicas de *Prompt Engineering* foram utilizadas para garantir que cada questão seguisse um formato fixo (tópico, dificuldade, contexto, problema e variáveis). Entre os principais problemas identificados, destacam-se: (i) a geração de questões incompletas ou ambíguas; (ii) a introdução prematura de conceitos avançados em tópicos mais básicos, o que vai contra a progressão de aprendizagem esperada; e (iii) a dificuldade do modelo em manter uma diversidade de problemas dentro do mesmo contexto sem reformulações excessivamente semelhantes. Especialistas avaliaram uma amostra de questões com base em fatores como relevância para os objetivos de aprendizagem, clareza e nível de dificuldade, considerando o modelo apropriado para o ensino de programação.