=Paper=
{{Paper
|id=Vol-1877/CtrlE2017_MOA_08_120
|storemode=property
|title=Inspetor Online (Online Inspector)
|pdfUrl=https://ceur-ws.org/Vol-1877/CtrlE2017_MOA_08_120.pdf
|volume=Vol-1877
|authors= Francisca Leisia Nascimento,Jonathan Silva,Leonardo Lucena
}}
==Inspetor Online (Online Inspector)==
II Congresso sobre Tecnologias na Educação (Ctrl+E 2017) Universidade Federal da Paraíba - Campus IV Mamanguape - Paraíba – Brasil 18, 19 e 20 de maio de 2017 Inspetor Online Francisca Leisia M. Nascimento, Jonathan B. O. Silva, Leonardo Lucena Diretoria Acadêmica de Gestão e Tecnologia da Informação – Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte {jonathan.batista,leisia.medeiros}@academico.ifrn.edu.br, leonardo.lucena@ifrn.edu.br Abstract. The Inspetor Online is a web system that assists teachers in the correction of tests and exercises of computer programming, avoiding manual operations and reducing the deadlines for making results available to students. The tool is also critical for students as they will have instant feedback on the questions answered. The students can answer the questions initially offered by the teacher, and have the possibility to make new attempts at the resolution of the questions whose result was not satisfactory. Resumo. O Inspetor Online é um sistema web que auxilia os professores na correção de provas e exercícios de programação de computadores, evitando operações manuais e reduzindo os prazos para disponibilização de resultados aos alunos. A ferramenta também é fundamental para os alunos, pois eles terão um feedback instantâneo das questões respondidas. Os alunos podem responder as questões disponibilizadas inicialmente pelo professor, e tendo também a possibilidade de realizar novas tentativas na resolução das questões cujo resultado não foi satisfatório. 1. Introdução Buscamos o tempo inteiro ferramentas que nos auxiliem nas atividades do dia-dia. A intenção cada vez mais é substituir o trabalho manual pelo uso de ferramentas que possam nos ajudar nesse contexto. Atualmente, existem ferramentas online de correção de código, como juízes online, muito utilizadas na preparação dos alunos para olimpíadas de programação. E no contexto educacional? Se trabalhamos com disciplinas que possuem essas questões, como podemos usar uma ferramenta como essa? A prática e a repetição regular de exercícios são essenciais para a aprendizagem de programação [Paes et al. 2013, apud Galvão et al. 2016, p. 141]. Errar faz parte do processo de aprendizagem. Por isso, um rápido feedback é essencial para que os alunos possam perceber os erros e assim evitar que fiquem frustrados na tentativa de aprender os princípios da programação de computadores [Pelz et al. 2012, apud Galvão et al. 2016, p. 141]. Nesse contexto, desenvolvemos uma ferramenta que auxilie na correção das atividades atribuídas pelos professores de disciplinas de programação. A ferramenta automatiza suas atividades, traz mais agilidade ao processo e, consequentemente, proporciona ao aluno uma maior interatividade na resolução dos problemas, podendo acompanhar seus resultados em tempo real. Essa ferramenta, chamada Inspetor Online, é um sistema de avaliação automática de questões de programação, seguindo a mesma abordagem dos Juízes Online. 704 II Congresso sobre Tecnologias na Educação (Ctrl+E 2017) Universidade Federal da Paraíba - Campus IV Mamanguape - Paraíba – Brasil 18, 19 e 20 de maio de 2017 Um Juiz Online, também chamado de sistema de avaliação automática, contém um conjunto de problemas de programação que devem ser resolvidos pelos usuários. O sistema corrige automaticamente aos códigos-fonte enviados através do uso de casos de teste. A correção é realizada comparando a saída gerada pela execução do programa com a saída esperada. [Kurnia et al. 2001, apud Francisco et al. 2016, p. 12]. 2. Contexto de uso e público alvo As plataformas de juízes online são geralmente utilizadas na preparação dos usuários para competições, como por exemplo, maratonas de programação. A proposta do inspetor é o foco em utilização dentro do ambiente educacional, ou seja, em sala de aula. Ele visa sempre facilitar o trabalho do professor e proporcionar imersão do aluno no ambiente sala de aula, e não somente preparação para competições externas. Isso traz a sensação de ambiente exclusivo, e que pode ser aplicado de acordo com a metodologia do professor. O inspetor online surgiu da necessidade de auxiliar os professores nas correções de provas e exercícios das disciplinas de programação com auxílio de uma ferramenta que poderá realizar esse trabalho de forma instantânea. "[...] em uma turma heterogênea, o planejamento e correção de problemas gera uma sobrecarga no professor, dificultando o feedback aos alunos, o que pode causar frustrações no processo de ensino-aprendizagem". [Vier et al. 2015 apud Francisco et al. 2016, p. 11]. Buscamos um processo onde possamos diminuir a preocupação com prazos para disponibilizar notas e gabaritos, aumentar a produtividade do professor, e motivar o aluno no aprendizado de programação com auxílio da ferramenta. Após a submissão da questão - realizada pelo aluno - o Inspetor Online já disponibiliza o resultado que poderá ser visualizado e ficará disponível no painel do aluno. O professor cadastrará suas listas de questões – contendo casos de teste e gabarito para o aluno visualizar posteriormente – que serão disponibilizadas para que os alunos cadastrados no sistema possam responder. As respostas dos alunos são comparadas com os casos de teste, inserido pelo professor anteriormente, e dessa forma o aluno obtém o resultado instantaneamente da questão que foi respondida, podendo realizar outras tentativas caso não obtenha sucesso. O aluno no seu painel, visualizará as listas contendo as questões cadastradas pelos professores, e poderá selecionar a questão que desejará responder, e irá enviar sua resposta na linguagem de programação previamente selecionada por ele. Assim, o inspetor fará seu trabalho de compilar o código do aluno na linguagem escolhida, e comparar os resultados com os casos de teste cadastrados pelo professor referente aquela questão. Nesse mesmo sentido, Ihantola et al. (2015) afirma que “a avaliação contínua durante um curso de programação garante que os estudantes pratiquem bastante, bem como obtenham feedback sobre a qualidade de suas soluções”. (apud Galvão et al. 2016, p. 141). A intenção é auxiliar tanto o aluno – que poderá receber feedback sobre sua pontuação de forma rápida e precisa – quanto o professor, que não precisará passar horas fazendo correções manuais de provas e trabalhos de programação. 3. Desenvolvimento 705 II Congresso sobre Tecnologias na Educação (Ctrl+E 2017) Universidade Federal da Paraíba - Campus IV Mamanguape - Paraíba – Brasil 18, 19 e 20 de maio de 2017 O Inspetor Online foi desenvolvido utilizando a linguagem de programação Scala [Odersky, Martin, Lex Spoon e Bill Venners, 2016], em conjunto a framework Play [Hilton, Peter, Erik Bakker e Francisco Canedo, 2013] e o banco de dados PostgreSQL. Primeiramente foram desenhadas as telas da aplicação, que seguem o design material da Google. Foi estabelecido em reunião o uso da framework Materialize (uma framework baseada no design material) na implementação do front-end. Todas as telas receberam uma versão estática para que em seguida a lógica fosse implementada no back- end. No back-end, o desenvolvimento deu-se início na conexão ao banco de dados, para facilitar o acesso aos dados e a criação de consultas de forma funcional (um dos paradigmas da linguagem Scala), foi integrado a aplicação a biblioteca Slick, que permite utilizar o Scala ao invés do SQL para realizar consultas, permitindo trabalhar com o banco, como se estivesse trabalhando com coleções da linguagem. Para a autenticação dos usuários ao sistema, foi integrado o Silhouette, uma biblioteca para framework Play que suporta vários métodos de autenticação, entre eles a autenticação básica utilizada pelo sistema. O usuário autenticado é identificado entre 3 papeis: administrador, aluno e professor, isso é fundamental para o sistema identificar qual módulo será utilizado. As bases dos módulos de aluno e professor, foram desenvolvidos paralelamente. No módulo aluno, foi implementada a lógica de envio das respostas primeiro, tendo em mente um editor online que suportasse as linguagens interpretadas pelo sistema. Utilizou- se o ACE editor, um editor embutido em Javascript que suporta por padrão as linguagens Ruby, Python e Scala. Ao desenvolver o módulo professor, foi pensado como os testes seriam esquematizados pelo usuário. Seguindo o padrão de juízes online, implementou-se uma rotina de teste que executa um código enviado pelo aluno, com as entradas definidas pelo professor gerando saídas, que são realizadas comparadas e categorizadas. Definiu-se o envio de arquivos de teste com uma sintaxe simples, onde o professor define a entrada e a saída no mesmo arquivo, com cada arquivo representando um caso de teste. 4. O Inspetor Online O sistema possui dois módulos distintos, um para professores e outro para estudantes, que são executados de acordo com os privilégios da conta do usuário. Para acessar o sistema o usuário deve estar cadastrado no sistema da instituição de ensino. Esse sistema faz uso do Google Classroom (um serviço de gerenciamento de turmas virtuais), onde suas informações serão adquiridas, através da API disponibilizada pelo serviço. No módulo do professor, a funcionalidade principal é o gerenciamento de listas de exercícios. As listas servem somente para agrupar questões e definir um assunto geral (Figura 1). 706 II Congresso sobre Tecnologias na Educação (Ctrl+E 2017) Universidade Federal da Paraíba - Campus IV Mamanguape - Paraíba – Brasil 18, 19 e 20 de maio de 2017 Figura 1. Tela de cadastro de lista Quando cadastrando uma questão (Figura 2), o professor deve providenciar arquivos de teste para aplicação. Cada arquivo gera uma rotina onde são comparadas as saídas geradas pelo código do aluno. Uma linguagem de marcação simples foi implementada para interpretar esses arquivos. Figura 2. Tela de cadastro de questão No módulo aluno, o usuário seleciona entre as listas cadastradas pelo professor para responde uma questão. Informações como exemplos de entrada e saída são informadas, permitindo o aluno testar o seu código antes de enviar uma resposta. O sistema providencia um editor online (Figura 3) que realiza o destaque de sintaxe de acordo com a linguagem. As linguagens de programação disponíveis para resolução das questões são: Ruby, Python, Scala. 707 II Congresso sobre Tecnologias na Educação (Ctrl+E 2017) Universidade Federal da Paraíba - Campus IV Mamanguape - Paraíba – Brasil 18, 19 e 20 de maio de 2017 Figura 3. Imagem ilustrando resolução de uma questão Após enviar o código fonte para o sistema, uma rotina de testes é executada, onde uma nota e um estado é atribuído ao resultado. O estado desse envio é classificado entre 5 categorias que ajudam o aluno a identificar, caso necessário, a diferença entre a saída gerado pelo seu código e a saída esperada (veja Tabela 1), deixando transparente o que deve ser alterado para que uma nota maior seja alcançada. Ao contrário de outros juízes, o Inspetor Online, mantém um sistema de notas mais simples que espelha mais a realidade do aluno, onde retirada a porcentagem de testes passados com sucesso uma nota de 0 a 10 é atribuída a resposta. O resultado fica disponível ao aluno na sua tela principal (Figura 4). Tabela 1. Estados atribuídos a uma resposta pelo sistema Categoria Descrição OK Código passou com sucesso por todos os testes. A saída gerada pelo código comparada a saída de um teste possui C diferenças entre letras maiúsculas e minúsculas A saída gerada pelo código comparada a saída de um teste possui espaços S brancos a mais. CS Combinação da categoria C e S. A saída gerada pelo código comparada a saída de um teste está totalmente E diferente. 708 II Congresso sobre Tecnologias na Educação (Ctrl+E 2017) Universidade Federal da Paraíba - Campus IV Mamanguape - Paraíba – Brasil 18, 19 e 20 de maio de 2017 Figura 4. Tela de questões resolvidas 5. Trabalhos Relacionados O feeper consiste em uma ferramenta web para apoiar a aprendizagem de programação em sala de aula, assim como em extraclasse. Na ferramenta, são disponibilizados exercícios práticos que são organizados de forma a desafiar o aluno de forma gradual na resolução e também acompanhar a sua evolução desde o início do uso desta ferramenta. [Alves et al. 2013, p. 1080] Outra iniciativa que também utiliza Juízes Online é a de Santos e Ribeiro, que propõe o JOnline [Santos e Ribeiro, 2011, apud Chaves et al. 2014, p. 241] um sistema que possui um Juiz Online próprio no qual é possível acessar problemas para serem resolvidos e submeter códigos-fonte para a visualização do resultado. Além da programação colaborativa, o sistema ainda adiciona funcionalidades didáticas ao juiz auxiliando o aluno no processo de aprendizagem. [Chaves et al. 2014, p. 241] Temos também o MOJO, que é uma ferramenta que integra o ambiente Moodle com os Juízes online. O MOJO é uma ferramenta que se propõe a obter questões, de programação, de terceiros (Juízes Online) para resolução pelo aluno [Chaves et al. 2014, p. 247]. Como o foco é no professor, o MOJO recebe a resposta do Juiz Online e apresenta para o professor, para que este então dê um feedback para os seus alunos. [Alves et al. 2013, p. 1079]. É importante citar que existem trabalhos importantes nesse campo, e que estamos buscando formas de facilitar o ensino de programação e proporcionar um ambiente moderno por meio de ferramentas tecnológicas que cada vez mais estão surgindo para auxiliar no ambiente educacional. O Inspetor Online, ao contrário dos trabalhos mencionados, segue o modelo código aberto e propõe interface de simples utilização e apoio no resultado da resolução das questões com resultados que podem facilmente ser identificados pelos alunos, além de permitir o cadastramento de listas com quantas questões o professor desejar. Outro diferencial é que ao final do período de submissão das questões, os alunos poderão ter acesso ao gabarito anteriormente cadastrado pelo professor, assim o professor pode 709 II Congresso sobre Tecnologias na Educação (Ctrl+E 2017) Universidade Federal da Paraíba - Campus IV Mamanguape - Paraíba – Brasil 18, 19 e 20 de maio de 2017 estimular o pensamento crítico do aluno acerca do problema com discursões em sala de aula. 6. Resultados Esperados Buscamos melhorar cada vez mais a ferramenta e dessa forma implementar as funcionalidades que consideramos de suma importância para aplicação. Atualmente não foi implementada a funcionalidade de formação de turmas, o desempenho dos alunos é medido de forma individual, e o professor acompanha o desenvolvimento deles diretamente. Sendo disponibilizada essa funcionalidade, os alunos seriam inseridos em um grupo – que chamamos de turma – onde o professor teria acesso as práticas de um aluno da turma a qualquer momento, e também poderia medir o desempenho da turma como um todo. Dessa forma, os alunos terão possibilidade de interagir melhor na turma, fazer comentários sobre questões, e podendo até ajudar aqueles colegas do grupo que estão sentindo dificuldades em uma questão específica. Isso é importante para interação e acompanhamento da turma, vai além da sala de aula, e é uma das funcionalidades que podem ser implementadas ao longo do desenvolvimento. Espera-se que essa ferramenta de fato contribua para auxiliar os alunos e professores nas disciplinas de programação, proporcionando resultados de forma rápida, e incentivando o aluno a buscar melhorias no desenvolvimento de suas respostas, que ficarão visíveis a ele e ao professor. No primeiro semestre de 2017 o Inspetor Online será usado em turmas regulares em uma instituição de ensino. O código fonte está disponível em https://github.com/leisiamedeiros/Inspetor_Online e uma demonstração está disponível em https://youtu.be/mwarNMXhbKg. 7. Referências Francisco, R., Júnior, C.P. and Ambrósio, A.P., 2016, November. Juiz Online no ensino de Programação Introdutória - Uma Revisão Sistemática da Literatura. In Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação-SBIE) (Vol. 27, No. 1, p. 11-12). Galvão, L., Fernandes, D. and Gadelha, B., 2016, November. Juiz online como ferramenta de apoio a uma metodologia de ensino híbrido em programação. In Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação-SBIE) (Vol. 27, No. 1, p. 141). Odersky, Martin, Lex Spoon, and Bill Venners. "Programming in Scala." (2016). Hilton, Peter, Erik Bakker, and Francisco Canedo. Play for Scala: Covers Play 2. Manning Publications Co., 2013. Alves, F.P. and Jaques, P., 2014. Um ambiente virtual com feedback personalizado para apoio a disciplinas de programação. In Anais dos Workshops do Congresso Brasileiro de Informática na Educação (Vol. 3, No. 1, p. 1080). Chaves, J.O.M., Castro, A.F., Lima, R.W., Lima, M.V.A. and Ferreira, K., 2014. Mojo: uma ferramenta para integrar juízes online ao moodle no apoio ao ensino e aprendizagem de programação. HOLOS, 5, pp.241-247. 710