BOCA Online Contest Administrator - Sistema de Submissão

Manual de Referência para as equipes - versão setembro/2010 (para o BOCA versão 1.4.x)

Copyright (c) 2003-2010 Ulisses F. F. da Silva and Cassio P. de Campos.
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 times com o sistema é feita usando-se um browser. A seguir descrevemos a interface disponível no BOCA para as equipes e suas principais funções.

É interessante que todos os times testem essas opções durante a sessão de aquecimento (warmup) que antecede a competição. O warmup tem exatamente esta função, e assim espera-se que cada equipe submeta um problema correto, submeta um problema errado, faça perguntas aos juízes através do sistema de clarifications e até submeta um arquivo pequeno para impressão.

Neste texto será assumido que o time 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 (endereços comuns são http://mainserver/boca/ ou http://bocaserver/boca/). Ao carregar a página, o time deverá ver a tela de login do BOCA. Basta digitar o login do BOCA fornecido ao time e a sua senha correspondente (usualmente algo como teamX, onde X deve ser substituído pelo número da equipe. A senha inicial é vazia caso não escolhida diferentemente).

Após realizar o login com sucesso, uma página deverá ser aberta contendo a identificação do time no canto superior esquerdo. Durante a competição, conforme o time acerta os problemas, pequenos balões coloridos são apresentados próximos ao nome do time. 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 sete opções, que representam a interface propriamente dita do BOCA. Estas sete opções são: Problems, Runs, Score, Clarifications, Tasks, Backups, Options e Logout.

Problems

Ao entrar nessa opção, o time poderá visualizar as questões da prova. Para cada questão, estará disponível um arquivo con sua descrição (muitas vezes apenas um arquivo de descrição é dado, contendo todas as questões da prova). Esta opção é normalmente utilizada para competições não-presenciais como forma de distribuir a prova. Em competições presenciais, sua utilidade é reduzida. Ainda nesta tela é possível visualizar as cores dos balões de cada problema.

Runs

Ao entrar nessa opção, o time poderá submeter as suas soluções e receber as respostas dos juízes. Para submeter uma solução, o time deverá selecionar o problema para o qual a solução foi feita, a linguagem utilizada e depois carregar o arquivo contendo a solução. Depois disso, basta clicar no botão Send para enviar sua solução. O botão Clear permite apagar os dados selecionados. Algumas observações importantes na hora de criar e submeter uma solução:

  1. Crie o seu arquivo-fonte contendo a solução de um problema com o nome indicado no enunciado. Cuidado com pequenos erros no nome e em sua extensão.
  2. Escolha a linguagem correta. Note que seu fonte deverá ter a extensão correspondente para cada uma das linguagens aceitas (veja a folha de questões da prova).
  3. Lembre-se de que sua solução deve ler os dados da entrada padrão e escrever os resultados na saída padrão. Nada deve ser escrito na saída padrão de erro. Além disso, programas escritos em linguagens que possibilitam o retorno de algum valor para o sistema operacional devem retornar o valor 0 (zero), que por convenção indica que nenhum problema ocorreu na execução.

Para receber as respostas dos juízes, o time deverá clicar em Runs e esperar que a lista contendo as respostas recebidas para cada solução submetida seja atualizada (ainda assim, não perca tempo esperando. Você pode produzir enquanto a resposta dos juízes não chega). Vale a pena lembrar que nos últimos minutos os times que submeterem soluções não receberão mais as respostas dos juízes (assim o suspense fica melhor, não? :-). Esse prazo é informado na competição. Cada competição tem seu conjunto de respostas possível que as equipes podem receber. A seguir apresentamos apenas uma tabela exemplo com as respostas tradicionais. Verifique as especialidades da sua competição.

RespostaDescrição
YES Seu programa foi aceito, e você receberá um balão da cor correspondente ao problema.
NO: Incorrect Output Também conhecido como Wrong Answer. Indica que seu programa respondeu incorretamente a algum(ns) dos testes dos juízes.
NO: Time-limit Exceeded A execução do seu programa excedeu o tempo permitido pelos juízes. Esse limite de tempo usualmente não é divulgado aos times e pode variar para cada problema.
NO: Runtime Error Durante o teste ocorreu um erro de execução (causado pelo seu programa) na máquina dos juízes. Acesso a posições irregulares de memória ou estouro dos limites da máquina são os erros mais comuns.
NO: Compilation Error Seu programa tem erros de sintaxe. Pode ser ainda que você errou o nome do problema ou linguagem no momento da submissão.
NO: Output Format Error Também conhecido como Presentation Error, indica que a saída do seu programa não segue a especificação exigida na folha de questões, apesar do "resultado" estar correto. Corrija para se adequar à especificação do problema.
NO: Contact Staff Você deve pedir a presença do pessoal de staff, pois algum erro incomum aconteceu.

Score

Nessa opção será mostrado o placar atualizado da competição. Vale a pena lembrar que o placar será congelado antes do final da competição (suspense mantido :-). Esse prazo também é informado na competição, e o placar quando estiver congelado mostra um aviso sobre seu estado.

Clarifications

Essa opção permite que o time faça perguntas aos juízes a cerca de um problema específico ou de algum aspecto geral da prova. O time deverá selecionar o problema relacionado à sua pergunta ou selecionar General, caso a pergunta não seja específica. Logo abaixo deverá ser escrito o texto da clarification. Para enviar a clarification basta clicar no botão Send. O botão Clear apaga os dados selecionados. Para visualizar a resposta da clarification, o time deverá estar na opção Clarifications e olhar na lista das clarifications submetidas se a resposta já foi dada. Como já foi mencionado, uma lista contendo as clarifications pertinentes a cada time será sempre mostrada nessa opção. Algumas observações importantes sobre clarifications:

  1. Os times devem fazer perguntas sobre a prova utilizando apenas essa interface disponível no BOCA!
  2. O time deverá ficar atento às clarifications durante toda a prova, pois uma clarification feita por um time poderá ser respondida para todos os outros. Os juízes também podem enviar clarifications a todos os times se julgarem conveniente. Fiquem atentos.
  3. As respostas de clarifications não surgem na tela. Você deve consultar esta página para vê-las.

O sistema permite que o juiz respondendo uma dúvida 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. Neste caso sugerimos ler com cuidado as questões e as possíveis clarifications relacionadas.

Tasks

Ao entrar nessa opção, o time poderá enviar arquivos para impressão. Para isso o arquivo deve ser selecionado e então basta clicar no botão Send. O botão Clear permite apagar os dados selecionados. Outra opção neste item é o botão S.O.S. que pode ser usado para chamar a ajuda do pessoal de staff. Essa ajuda deve estar relacionada apenas com problemas do computador ou semelhantes, já que dúvidas sobre a prova devem ser enviadas pelo sistema BOCA na opção Clarifications.

Backups

No sistema BOCA é possível enviar pequenos arquivos para que sejam guardados no servidor em case de uma interrupção do funcionamento do computador do time. Entrando nessa opção poderão ser vistos os arquivos já enviados e mantidos no servidor, assim como enviar novos arquivos. Note que existe um limite usualmente pequeno na capacidade de armazenamento para que não hajam abusos. Um arquivo compactado é geralmente a melhor forma de guardar dados no servidor.

Options

Entrando nessa opção poderão ser vistas as informações: Username, User full name e User description do time. Também será possível trocar a senha do time 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.

Logout

Essa opção permite sair do BOCA.

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, em sua versão inicial, foi feito por Ulisses Furquim Freire da Silva e complementado e atualizado por Cassio Polpo de Campos.


Valid HTML 4.01!