BOCA Online Contest Administrator - Sistema de Submissão

Manual de Referência para os juízes - versão setembro/2010 (para o BOCA versão 1.4.x)

Copyright (c) 2006-2010 Cassio P. de Campos (cassio@ime.usp.br).
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license may be found in http://www.gnu.org/licenses/

O BOCA é um software criado para controlar uma competição nos moldes da Maratona de Programação da SBC. Foi feito em PHP e a interação dos juízes com o sistema é feita usando-se um browser. A seguir descrevemos a interface disponível no BOCA para os juízes e suas principais funções.

Neste texto será assumido que o juiz já realizou o seu login na máquina e abriu uma janela do navegador (leia as instruções sobre o Maratona Linux ou sobre o sistema que estiver sendo utilizado). O BOCA é acessado através de uma URL (usualmente a página se chama http://mainserver/boca ou http://bocaserver/boca). Ao carregar a página, o juiz deverá ver a tela de login do BOCA. Basta digitar o login do BOCA fornecido ao juiz e a sua senha correspondente.

Após realizar o login com sucesso, uma página deverá ser aberta contendo a identificação do juiz no canto superior esquerdo. No canto superior direito haverá a informação sobre o estado da competição: ou ainda não começou, ou já acabou, ou está parada, ou a competição está em andamento e a quantidade de minutos restantes será mostrada. Mais abaixo dessas primeiras linhas estarão seis opções, que representam a interface propriamente dita do BOCA. Estas seis opções são: Runs, Score, Clarifications, History, Options e Logout. Existe ainda uma opção extra para o juiz chefe (que deve ser previamente apontado através da interface do admin no sistema): Chief. Ela não está disponível para os demais juízes.

Runs

Ao entrar nessa opção, o juiz poderá visualizar as submissões que ainda não foram corrigidas e devem ser processadas. Para corrigir uma submissão, o juiz deve clicar sobre seu número (como é feito o tratamento de concorrência para que dois ou mais juízes não peguem a mesma Run, neste momento o juiz pode ser avisado que a Run acaba de ser pega por outro juiz). Ao clicar em uma submissão, o juiz verá os seguintes campos:

  1. Site: número do site atual.
  2. Number: número da Run sendo julgada.
  3. Time: minutos decorridos da competição para esta submissão.
  4. Problem X: X é o nome do problema. Ao lado, existem links para fazer o download (clicando sobre o nome) ou simplesmente visualizar os arquivos de entrada e saída (clicando em view). Usando o esquema de autojudging, o importante é ficar atento à saída esperada, comparando-a com a saída que o programa da equipe gerou.
  5. Language Y: Y é a linguagem escolhida pela equipe. Ao lado aparece o script para compilação e execução nesta linguagem. Note que, utilizando o esquema de autojudging, não é necessário olhar para esse arquivo.
  6. Source code: Aqui é possível visualizar (view) ou fazer o download do arquivo submetido. Um ponto importante para o juiz é verificar se o nome e a extensão desse arquivo estão de acordo com o problema e a linguagem escolhidos.
  7. Answer: Neste campo o juiz escolherá qual a resposta que será enviada para a equipe. Para tomar essa decisão, ele tem à disposição os arquivos e botões já mencionados e também, logo abaixo, os dados gerados pelo esquema de autojudging (se esse esquema estiver sendo utilizado).
  8. Autojudging answer: Resposta sugerida pelo esquema de autojudging. Usualmente o autojudging acerta o que deve ser respondido às equipes, mas pode falhar. Por exemplo, ele pode dizer que a resposta está errada (Incorrect Output), pois comparou os arquivos e não eram iguais, mas o único erro do programa da equipe foi na digitação de um acento em uma palavra (usualmente isso é simplesmente um Output format error). Outros detalhes podem ocorrer, e o juiz deve estar atento aos próximos demais dados fornecidos pelo autojudging.
  9. Autojudged by: indica qual computador fez o autojudging, no caso de diversos autojudgings estarem sendo utilizados. Usualmente não essencial na correção.
  10. Standard output: links para fazer o download ou visualizar a saída padrão gerada pelo programa da equipe. Usualmente neste lugar deve estar a saída que foi gerada pela equipe e que deve ser comparada com a saída esperada, disponível no item Problem. Caso haja algum problema, eventualmente pode ser possível visualizar o erro aqui.
  11. Standard error: links para fazer o download ou visualizar a saída de erro padrão gerada pelo programa da equipe. Quando um problema acontece, por exemplo um erro em tempo de execução por causa de um acesso ilegal, a informação sobre o erro torna-se disponível nesta saída de erro. Além de sempre analisar essa saída, o juiz deve estar atento à saída padrão, pois máquinas virtuais como da linguagem Java podem escrever os erros na saída padrão e/ou na saída de erro. Na saída de erro está ainda o resultado do diff feito entre o arquivo esperado e o arquivo gerado pelo programa submetido.

Utilizando o botão Judge o juiz faz o julgamento da Run, e após isso não tem mais acesso para alterar seu julgamento. É possível ainda devolver a Run para o pool de submissões a serem julgadas, utilizando o botão Cancel.

Na tela de Runs, o juiz visualiza todas as submissões, mesmo aquelas que estão sendo julgadas por outros juízes. Tais submissões aparecem com a cor azul. As submissões sendo julgados por ele próprio aparecem em vermelho, e somente ele tem acesso para julgá-las (ou o admin, claro).

Chief

Além de poder atuar como um juiz normal, um juiz pode ser designado como chief. Nesta aba o juiz chefe tem a opção de julgar runs que foram previamente julgadas mas obtiveram resultados diferentes dos diferentes juízes. A tela é similar àquela do juiz normal, só que runs julgadas aqui são dadas como resposta final ao time, sem a necessidade de intervenção de outro juiz. Por esse motivo, é aconselhável que mesmo o juiz chefe, quando estiver julgando runs sem conflito, apenas utilize a aba Runs, e deixe para utilizar esta aba apenas para resolver os casos de runs que foram julgadas de forma diferente por diferente juízes. Além das informações da run, o juiz chefe possui (ao clicar sobre a run) as resposta contraditórias que foram dados pelos juízes, de forma a desempatar a questão e enviar a resposta mais adequada ao time.

Score

Nessa opção será mostrado o placar atualizado da competição. Vale a pena lembrar que o placar disponível para os juízes é completo, e portanto deve ser mantido em sigilo até a divulgação dos resultados finais da competição (para manter o suspense :-).

Clarifications

Essa opção permite que o juiz responda as clarifications enviadas pelas equipes a cerca de um problema específico ou de algum aspecto geral da prova. Para responder uma clarification, o juiz deve clicar sobre seu número Cuidado: a caixa de texto disponível na parte inferior não é para responder perguntas, mas para elaborar uma pergunta. Isso serve para que um juiz crie uma pergunta, que então poderá ser respondida por ele mesmo (ou por outros juízes) e enviada para todas as equipes, funcionando assim como uma forma de aviso geral.

Neste instante ele poderá visualizar informações sobre a clarification, como número do site, número da clarification, tempo em minutos desde o início da competição e problema sobre o qual a pergunta está relacionada, além de duas caixas de texto: uma com a pergunta e outra onde será preenchida a resposta. Se julgar relevante, o juiz pode clicar nas seleções answer to all users in the site para que esta pergunta seja respondida (enviada) para todas as equipes no site ou answer to all users in all sites para que a resposta seja enviada para todas as equipes em todos os sites (no caso de uma competição executada no BOCA em um único site, não há diferença entre estas seleções).

O sistema também permite que o juiz utilize um botão chamado No response. Isso ocorre em geral porque a pergunta feita não deve ser respondida, pois sua resposta faz parte do entendimento da questão ou da prova, ou já foi respondida anteriormente. Por fim, existe um botão onde o juiz pode devolver a clarification para que outro juiz a responda.

History

Ao entrar nessa opção, o juiz poderá visualizar as Clarifications e Runs que foram respondidas/corrigidas até o momento. Não é possível alterar nada, apenas visualizar.

History

Nesta aba o juiz pode atuar como uma equipe, submetendo runs para serem julgadas. O uso deste item se dá no momento de testar o sistema e o conjunto de problemas. Juízes podem submeter runs mesmo antes de iniciada a competição.

Options

Entrando nessa opção poderão ser vistas as informações: Username, User full name e User description do juiz. Também será possível trocar a senha do juiz no BOCA digitando-se a senha antiga e a nova (duas vezes). Para efetuar a troca da senha, basta preencher os campos corretamente e clicar no botão Send. É importante ter uma senha segura para um juiz.

Logout

Essa opção permite sair do BOCA.

Dicas importantes

Ao corrigir problemas, devemos tomar extremo cuidado. Ainda que seja possível alterar a correção posteriormente (através do ambiente do administrador da competição), isso implica que a equipe receberá uma resposta e, depois de certo tempo, outra. Obviamente esse tipo de situação não é agradável.

Sempre que um dos juízes está corrigindo um problema pela primeira vez (ou ainda nas demais vezes iniciais, isto é, até o momento foram feitas poucas submissões desde problema), é interessante que todos participem e tenham cuidados especiais, analisando a submissão com calma. É possível que na primeira submissão de um dado problema possamos descobrir um defeito no sistema ou nos arquivos de entrada e saída (claro que torcemos para isso nunca aconteça :-).

Para responder às clarifications, é necessário que o juiz tenha lido com calma as questões e identifique se a pergunta é válida e deve ser respondida. Além disso, é necessário considerar se a resposta deve ser enviada para todas as equipes ou apenas para aquela que fez a pergunta. Perguntas típicas que não são respondidas são: Qual o tempo limite desse problema?, Dada essa entrada, qual a saída correta?, etc. Além disso, perguntas cujas respostas estão definidas nos enunciados normalmente não são respondidas. Caso haja uma dúvida sobre o que se deve responder, o juiz deve procurar o juiz-chefe responsável pela prova.

Sobre o BOCA e este documento

O sistema BOCA foi criado por Cassio Polpo de Campos e pode ser encontrado em http://www.ime.usp.br/~cassio/boca/. Este manual foi feito por Cassio Polpo de Campos.


Valid HTML 4.01!