<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Francisca Leisia M. Nascimento</string-name>
          <email>leisia.medeiros@academico.ifrn.edu.br</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Jonathan B. O. Silva</string-name>
          <email>jonathan.batista@academico.ifrn.edu.br</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Leonardo Lucena</string-name>
          <email>leonardo.lucena@ifrn.edu.br</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Diretoria Acadêmica de Gestão e Tecnologia da Informação - Instituto Federal de Educação</institution>
          ,
          <addr-line>Ciência e Tecnologia do Rio Grande do Norte</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2017</year>
      </pub-date>
      <fpage>704</fpage>
      <lpage>710</lpage>
      <abstract>
        <p>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.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introdução</title>
      <p>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?</p>
      <p>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].</p>
    </sec>
    <sec id="sec-2">
      <title>2. Contexto de uso e público alvo</title>
      <p>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.</p>
      <p>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.</p>
      <p>"[...] 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].</p>
      <p>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.</p>
      <p>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.</p>
      <p>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.</p>
      <p>
        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”.
        <xref ref-type="bibr" rid="ref1">(apud Galvão et al. 2016,
p. 141)</xref>
        . 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.
      </p>
    </sec>
    <sec id="sec-3">
      <title>3. Desenvolvimento</title>
      <p>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.</p>
      <p>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
backend.</p>
      <p>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.</p>
      <p>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.</p>
      <p>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.
Utilizouse o ACE editor, um editor embutido em Javascript que suporta por padrão as linguagens
Ruby, Python e Scala.</p>
      <p>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.</p>
    </sec>
    <sec id="sec-4">
      <title>4. O Inspetor Online</title>
      <p>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.</p>
      <p>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).</p>
      <p>Figura 1. Tela de cadastro de lista</p>
      <p>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.</p>
      <p>Figura 2. Tela de cadastro de questão</p>
      <p>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.</p>
      <p>Figura 3. Imagem ilustrando resolução de uma questão</p>
      <p>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).</p>
      <p>Tabela 1. Estados atribuídos a uma resposta pelo sistema
Categoria</p>
      <sec id="sec-4-1">
        <title>Descrição OK C S</title>
        <p>CS
E</p>
      </sec>
      <sec id="sec-4-2">
        <title>Código passou com sucesso por todos os testes.</title>
        <p>A saída gerada pelo código comparada a saída de um teste possui
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
brancos a mais.</p>
      </sec>
      <sec id="sec-4-3">
        <title>Combinação da categoria C e S. A saída gerada pelo código comparada a saída de um teste está totalmente diferente.</title>
        <p>Figura 4. Tela de questões resolvidas</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Trabalhos Relacionados</title>
      <p>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]</p>
      <p>
        Outra iniciativa que também utiliza Juízes Online é a de Santos e Ribeiro, que
propõe o JOnline [Santos e Ribeiro, 2011, apud
        <xref ref-type="bibr" rid="ref6">Chaves et al. 2014</xref>
        , 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. [
        <xref ref-type="bibr" rid="ref6">Chaves et al. 2014</xref>
        , p. 241]
      </p>
      <p>
        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 [
        <xref ref-type="bibr" rid="ref6">Chaves et al. 2014</xref>
        ,
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].
      </p>
      <p>É 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.</p>
      <p>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
estimular o pensamento crítico do aluno acerca do problema com discursões em sala de
aula.</p>
    </sec>
    <sec id="sec-6">
      <title>6. Resultados Esperados</title>
      <p>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.</p>
      <p>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.</p>
      <p>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.</p>
    </sec>
    <sec id="sec-7">
      <title>7. Referências</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <string-name>
            <surname>Francisco</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Júnior</surname>
            ,
            <given-names>C.P.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Ambrósio</surname>
            ,
            <given-names>A.P.</given-names>
          </string-name>
          ,
          <year>2016</year>
          , November. Juiz Online no ensino de Programação Introdutória - Uma
          <source>Revisão Sistemática da Literatura. In Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação-SBIE)</source>
          (Vol.
          <volume>27</volume>
          , No.
          <volume>1</volume>
          , p.
          <fpage>11</fpage>
          -
          <lpage>12</lpage>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <string-name>
            <surname>Galvão</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fernandes</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Gadelha</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <year>2016</year>
          , November.
          <article-title>Juiz online como ferramenta de apoio a uma metodologia de ensino híbrido em programação</article-title>
          .
          <source>In Brazilian Symposium on Computers in Education (Simpósio Brasileiro de Informática na Educação-SBIE)</source>
          (Vol.
          <volume>27</volume>
          , No.
          <volume>1</volume>
          , p.
          <fpage>141</fpage>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>Odersky</surname>
            , Martin,
            <given-names>Lex</given-names>
          </string-name>
          <string-name>
            <surname>Spoon</surname>
            , and
            <given-names>Bill</given-names>
          </string-name>
          <string-name>
            <surname>Venners</surname>
          </string-name>
          .
          <article-title>"Programming in Scala." (</article-title>
          <year>2016</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Hilton</surname>
            , Peter,
            <given-names>Erik</given-names>
          </string-name>
          <string-name>
            <surname>Bakker</surname>
          </string-name>
          , and Francisco Canedo.
          <article-title>Play for Scala: Covers Play 2</article-title>
          . Manning Publications Co.,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Alves</surname>
            ,
            <given-names>F.P.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Jaques</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <year>2014</year>
          .
          <article-title>Um ambiente virtual com feedback personalizado para apoio a disciplinas de programação</article-title>
          .
          <source>In Anais dos Workshops do Congresso Brasileiro de Informática na Educação</source>
          (Vol.
          <volume>3</volume>
          , No.
          <volume>1</volume>
          , p.
          <fpage>1080</fpage>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Chaves</surname>
            ,
            <given-names>J.O.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Castro</surname>
            ,
            <given-names>A.F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lima</surname>
            ,
            <given-names>R.W.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lima</surname>
            ,
            <given-names>M.V.A.</given-names>
          </string-name>
          and
          <string-name>
            <surname>Ferreira</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <year>2014</year>
          .
          <article-title>Mojo: uma ferramenta para integrar juízes online ao moodle no apoio ao ensino e aprendizagem de programação</article-title>
          .
          <source>HOLOS</source>
          ,
          <volume>5</volume>
          , pp.
          <fpage>241</fpage>
          -
          <lpage>247</lpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>