CodeTesting: Sistema de apoio ao ensino de Lógica de Programação
Authors: Mabel Ester , Tavares Joaldo , Buri Yla , Pereira Mario 
Published: May 2023

A disciplina de lógica de programação apresenta uma grande dificuldade para alguns estudantes. Essas dificuldades podem estar associadas à dificuldade de interpretar o problema proposto, dificuldade com a linguagem utilizada, ou até mesmo problemas para interpretar erros que ocorrem durante o desenvolvimento da solução. Além disso, muitas vezes os professores não possuem tempo durante a aula para corrigir e avaliar individualmente a solução de cada estudante [6]. Algumas pessoas têm uma experiência frustrante em seu primeiro contato com a programação por diversas razões. Algumas delas incluem a preocupação excessiva com detalhes de sintaxe da linguagem utilizada e a falta de clareza sobre o problema a ser solucionado, o que impede que uma solução adequada seja construída e mapeada. Isso pode resultar em obstáculos que dificultam o aprendizado nas disciplinas voltadas para a programação [7], transformando o esforço exercido na construção das soluções em um desafio adicional. Os cursos superiores de informática que têm a programação como base, tais como Programação Orientada a Objetos, Estrutura de Dados e Lógica de Programação e Algoritmos, têm enfrentado problemas de evasão e reprovação nos períodos iniciais. Essa situação afeta diretamente os resultados dos sistemas educacionais, tanto em instituições públicas quanto privadas. Infelizmente, muitos alunos iniciam esses cursos, mas não os concluem, resultando em um investimento de recursos que não gera retorno para a sociedade [5]. Após avaliar as dificuldades enfrentadas pelos alunos dos cursos de computação, constata-se a necessidade de novas metodologias e ferramentas que possam ajudá-los durante os primeiros períodos de aprendizado [4]. Nesse contexto, propõe-se uma solução que possa auxiliar tanto os estudantes iniciantes em programação quanto os professores, por meio da correção e avaliação de códigos dos alunos. Em sua maioria os sistemas desse tipo se apresentam como juízes online e sua principal funcionalidade é a execução do código e com base nos testes verificam se eles foram atendidos. Um dos mais recorrentes na literatura é o BOCA [3] utilizado na maratona de programação da Sociedade Brasileira de Computação (SBC), mas podemos citar outros como Beecrowd [2] e Neps [1]. A plataforma desenvolvida tem como objetivo oferecer uma aplicação web e mobile que ajuda no ensino e aprendizado da disciplina de lógica de programação, utilizando a linguagem de programação Java. A ideia é tornar o aprendizado mais acessível e interativo em dispositivos móveis e computadores com acesso à internet. A aplicação web e mobile permite que a ferramenta seja acessível em diferentes dispositivos e plataformas, atendendo a um público mais amplo. Ela se distingue dos juízes online por sua flexibilidade em termos de funcionalidades e pela maneira como lida com os erros, fornecendo feedbacks em uma linguagem simples e direta. O CodeTesting permite aos professores realizar o cadastro das tarefas, onde serão inseridos casos de testes com as entradas que serão utilizadas para testar o código e a saída esperada para aquele teste. Cada caso de teste será executado usando o código enviado pelo aluno para avaliar se a solução atende à saída esperada. Também possibilita ao aluno acessar a atividade, visualizar o enunciado, assim como alguns exemplos de entrada e saída e, por fim, fazer o envio da sua resolução. Após o envio, ao aluno também é possibilitado analisar o resultado obtido da questão enviada. Ele tem acesso à nota geral e aos casos de testes, onde ele pode entender melhor como o seu código se comportou diante daquele cenário. Se o código for compilado com sucesso, cada caso de teste executado pode gerar um dos três cenários: • Resposta Certa: quando o código enviado retorna o resultado conforme o esperado pelo teste; • Resposta Errada: quando o código enviado retorna um resultado diferente do esperado; • Erro em Tempo de Execução: quando o código enviado retorna alguma exception, neste caso são informados mais detalhes sobre à exception em questão. Dentro desse contexto, apresenta-se uma ferramenta funcional para aplicação e correção de código para os alunos e professores, com o principal intuito de colaborar no processo de aprendizagem e no desenvolvimento de soluções para problemas dentro das disciplinas de programação. Este sistema é uma alternativa em meio a diversas soluções já existentes.