Professional Documents
Culture Documents
1. Descrio do problema
O Programa de Ps-Graduao em Informtica (PPGI) da UFES precisa de um sistema de
facilite o processo de avaliao de docentes credenciados ao programa. 1 Tal clculo feito
manualmente todo ano e a coordenao do programa gostaria de um software que
automatizasse este clculo.
Os docentes so avaliados anualmente pelas publicaes que fizeram nos ltimos anos. O
PPGI possui regras de pontuao baseadas na qualificao dos veculos (conferncias e
peridicos onde os artigos so publicados), que feita de acordo com seus fatores de
impacto. Os veculos so divididos em categorias, chamadas Qualis: A1, A2, B1, B2, B3,
B4, B5 e C (A1 tendo os maiores fatores de impacto e C os menores). O PPGI, ento,
associa determinada pontuao a cada nvel, ex.: publicao B1 ou superior vale 10
pontos; B2 ou B3 vale 5 pontos; B4 ou B5 valem 1 ponto.
Publicaes em peridicos valem mais, portanto o PPGI determina um fator multiplicador
aplicado se a publicao em peridico (ex.: 1,5 indica que valem 50% mais; 2,0 indica
que valem o dobro, etc.). O sistema deve permitir o registro das regras de pontuao do
PPGI, que indicariam ainda a vigncia (datas de incio e fim, pois as regras mudam ao
longo do tempo), quantos anos devem ser considerados ao analisar as publicaes de um
docente (ex.: ltimos 2 anos, ltimos 3 anos) e qual a pontuao mnima que um docente
deve alcanar para se manter credenciado ao programa (ex.: 20 pontos).
Para efetuar o clculo da pontuao de cada docente, preciso saber: (1) quais veculos
existem; (2) qual a pontuao de cada veculo a cada ano; e (3) quais as publicaes de
cada docente. Para a parte (1), o sistema deve registrar a sigla, nome e fator de impacto
(um nmero real) de cada veculo. Para peridicos, registra-se ainda cdigo ISSN. Para a
parte (2), o sistema deve permitir importar arquivos de avaliao referentes a um
determinado ano, indicando qual o Qualis de cada veculo. Para a parte (3), o sistema
deve registrar, para cada publicao, ano, veculo, ttulo, pginas inicial e final e quais
docentes, dentre os cadastrados no sistema, so autores. Para publicaes em peridico,
registra-se tambm nmero e volume. No caso de conferncias, registra-se tambm o
nmero e o local da mesma. O cadastro de docente deve incluir nome, data de
nascimento, data de ingresso no programa e se o docente o coordenador do programa.
De posse de todas as informaes, o sistema ser usado para fins de recredenciamento de
docentes: dado um ano (ex.: 2017), o sistema dever calcular a pontuao de cada
docente, verificando se o valor mnimo para recredenciamento foi atingido, considerando o
sistema de pontuao vigente no dia 01/01 do ano especificado. No entram nesse
clculo, no entanto, o coordenador do programa, membros que entraram a menos de 3
1
Inspirado em: http://www.informatica.ufes.br/pos-graduacao/PPGI/credenciamento-de-docentes
Universidade Federal do Esprito Santo Programao III
Planilha de docentes
<cdigo>;<nome>;<data-nascimento>;<data-ingresso>;<coordenador?>
O cdigo numrico (inteiro, 16 dgitos); nome pode ser lido como texto; as datas so
informadas no formato dd/mm/aaaa; e o coordenador indicado com um X na respectiva
coluna.
Universidade Federal do Esprito Santo Programao III
Planilha de veculos
<sigla>;<nome>;<tipo>;<fator de impacto>;<issn>
Sigla, nome e ISSN podem ser lidos como texto; tipo um caractere, sendo C para
conferncias e P para peridicos; fator de impacto numrico (real).
Planilha de publicaes
<ano>;<sigla veculo>;<ttulo>;<lista de autores>;<nmero>;<volume
peridico>;<local conferncia>;<pgina inicial>;<pgina final>
Ano, nmero, volume e pginas so numricos (inteiros); sigla, ttulo e local podem ser
lidos como texto; a lista de autores uma lista de cdigos de docentes, separados por
vrgula.
Planilha de qualificaes
<ano>;<sigla-veculo>;<Qualis>
O ano numrico (inteiro); a sigla do veculo pode ser lida como texto; o Qualis um dos
valores possvel para qualificao do veculo: A1, A2, B1, B2, B3, B4, B5 ou C.
2.2. Processamento
Lidos todos os dados, o programa deve criar objetos em memria representando as
informaes contidas nos arquivos de entrada. Tais objetos devem estar ligados
adequadamente, conforme as associaes entre as classes de objetos, observando os
princpios da orientao a objetos.
Com os dados em memria (representados pelos objetos), o programa deve proceder
para a escrita dos relatrios.
Relatrio de recredenciamento
<nome do docente>;<pontuao alcanada>;<recredenciado?>
Este relatrio deve ser ordenado por nome do docente, em ordem crescente. Pontuao e
recredenciamento devem ser calculados segundo a regra vigente no dia 01/01 do ano em
questo. A pontuao deve ser indicada com 1 casa decimal. A ltima coluna indica os
casos de credenciamento automtico ou o credenciamento por pontos, conforme
especificao a seguir:
Coordenador: docente coordenador;
PPJ: docente entrou no programa h menos de 3 anos;
PPS: docente possui mais de 60 anos;
Sim: docente no se enquadra nos casos acima e alcanou a pontuao mnima;
No: docente no se enquadra nos casos acima e no alcanou a pontuao
mnima.
Lista de publicaes
<ano>;<sigla veculo>;<nome veculo>;<Qualis>;<fator de
impacto>;<ttulo da publicao>;<nomes dos docentes>
Este relatrio deve ser ordenado por Qualis, em ordem decrescente (A1 primeiro), seguido
por ano (decrescente) por sigla do veculo (crescente) e, por fim, pelo ttulo da publicao
(crescente). O fator de impacto deve ser formatado com 3 casas decimais e o nome dos
docentes deve estar separado por vrgulas. Note que este relatrio considera todas as
publicaes informadas e no apenas uma quantidade de anos, como no caso do
recredenciamento.
Estatsticas de publicaes
<Qualis>;<nmero de artigos>;<nmero de artigos por docente>
Este relatrio deve ser ordenado por Qualis, em ordem decrescente (A1 primeiro). A
segunda coluna indica o nmero total de artigos publicados em veculos com o respectivo
Qualis (somatrio em que cada artigo soma 1). J a ltima coluna indica o nmero de
artigos por docente em cada Qualis (mesmo somatrio, s que cada artigo soma 1
dividido pelo nmero de docentes autores). A ltima coluna deve ser formatada com 2
casas decimais. Este relatrio tambm considera todas as publicaes.
Inconsistncia Mensagem
O mesmo cdigo foi usado para dois Cdigo repetido para <objeto>: <cdigo>.
docentes ou veculos diferentes. (Substituir <objeto> por docente ou veculo;
substituir <cdigo> pelo cdigo em questo.
Aplicar este mesmo conceito nas mensagens
abaixo).
Sigla de veculo especificada para uma Sigla de veculo no definida usada na
publicao no foi definida na planilha de publicao <ttulo>: <sigla>.
veculos.
Cdigo de docente especificado para uma Cdigo de docente no definido usado na
publicao no foi definido na planilha de publicao <ttulo>: <sigla>.
docentes.
Tipo de um veculo no nem C nem P. Tipo de veculo desconhecido para veculo
<sigla>: <tipo>.
Sigla de veculo especificada para uma Sigla de veculo no definida usada na
qualificao no foi definida na planilha de qualificao do ano <ano>: <sigla>.
veculos.
Qualis especificado para uma qualificao Qualis desconhecido para qualificao do
de veculo no nenhuma das categorias veculo <sigla> no ano <ano>: <qualis>.
existentes: A1, A2, B1, B2, B3, B4, B5 ou C.
Qualis especificado para uma regra de Qualis desconhecido para regras de <data
pontuao no nenhuma das categorias incio vigncia>: <qualis>
existentes: A1, A2, B1, B2, B3, B4, B5 ou C.
Apesar de terminar sem produzir arquivos de sada, seu programa no deve ser
interrompido abruptamente com uma chamada a System.exit(), mas sim seguir at o
final do mtodo main() e terminar normalmente.
Quaisquer outras situaes de erro devem ser ignoradas. Pode-se assumir que nos testes
feitos durante a avaliao dos trabalhos outros tipos de erros diferentes dos listados acima
nunca acontecero.
3. Execuo
Seu programa deve ser executado especificando os nomes dos arquivos de entrada e o
ano a ser considerado no recredenciamento como opes de linha de comando,
especificadas a seguir:
Universidade Federal do Esprito Santo Programao III
Supondo que a classe do seu programa que possui o mtodo main() chama-se Main e
encontra-se no pacote tr abal ho, para executar seu programa lendo os arquivos
docentes.csv, veiculos.csv, publicacoes.csv, qualis.csv e regras.csv como arquivos de
entrada e considere o ano de 2017 para o recredenciamento, o comando seria:
java trabalho.Main -d docentes.csv -v veiculos.csv -p
publicacoes.csv -q qualis.csv -r regras.csv -a 2017
Recuperao de pontos2: alm dos parmetros acima, a verso Java do seu programa
pode, se quiser recuperar pontos perdidos (vide Seo 5), suportar dois parmetros
opcionais que estabelecem trs modos de execuo diferentes. Neste caso, o programa
deve poder ser chamado das trs formas, como a seguir:
java trabalho.Main -d docentes.csv -v veiculos.csv -p
publicacoes.csv -q qualis.csv -r regras.csv -a 2017: quando no
forem especificadas opes de execuo, o programa deve ler os arquivos de
entrada, gerar os relatrios e escrev-los nos arquivos de sada, como descrito
anteriormente;
java trabalho.Main --read-only -d docentes.csv -v
veiculos.csv -p publicacoes.csv -q qualis.csv -r regras.csv
-a 2017: quando especificada a opo --read-only, o programa deve ler os
arquivos de entrada, montar as estruturas de objetos em memria e serializar esta
estrutura em um arquivo chamado recredenciamento.dat. Os relatrios no
devem ser gerados neste caso;
java trabalho.Main --write-only: quando especificada esta opo, o
programa deve carregar os objetos serializados no arquivo
recredenciamento.dat, gerar os relatrios e escrev-los nos arquivos de sada.
Neste caso no h leitura de arquivo CSV.
Importante: as opes de execuo podem ser passadas em qualquer ordem. Portanto,
o comando
java trabalho.Main --read-only -d docentes.csv -v veiculos.csv
-p publicacoes.csv -q qualis.csv -r regras.csv -a 2017
equivalente a:
java trabalho.Main -q qualis.csv -r regras.csv -p
publicacoes.csv --read-only -a 2017 -v veiculos.csv -d
docentes.csv
2
Diferentemente dos pontos extras (vide Seo 6), a recuperao de pontos apenas recupera pontos
perdidos, o que significa que a nota do trabalho no poder ultrapassar o valor mximo de 10 pontos.
Universidade Federal do Esprito Santo Programao III
4. Condies de entrega
O trabalho deve ser feito obrigatoriamente em dupla3 e em duas verses: uma utilizando a
linguagem Java, outra utilizando a linguagem C++. O primeiro deve ser entregue at o
dia 29/06/2017 e o segundo at o dia 31/07/2017, impreterivelmente. As duplas para
os trabalhos Java e C++ no precisam, necessariamente, ser as mesmas. No entanto,
preciso avisar com antecedncia sobre eventuais trocas.
Dado que existem vrias verses dos compiladores Java e C++, fica determinado o uso
das verses instaladas nas mquinas dos LabGrads (Laboratrios de Graduao do
Departamento de Informtica) como verses de referncia para o trabalho prtico. Seu
trabalho deve compilar e executar corretamente nas mquinas destes laboratrios. Alm
disso, os arquivos de cdigo-fonte devem estar codificados com Unicode (UTF-8) para
evitar erros de compilao.
3
Exceto quando permitido extraordinariamente pelo professor, acordado com antecedncia. Caso contrrio,
o aluno/grupo sofrer uma penalidade de 2 pontos.
4
Alm da entrega do trabalho, ser feita uma entrevista com cada grupo, separadamente. Tais entrevistas
devem acontecer at a data de entrega do trabalho em questo, em horrio de atendimento do professor.
Os alunos podem enviar o trabalho depois da entrevista (at as 23h59 da data limite), porm devem trazer
uma cpia do trabalho para apresentao no momento da entrevista.
5
Para saber mais sobre hash MD5, visite sua pgina na Wikipedia:
https://pt.wikipedia.org/wiki/MD5#Hashes_MD5
6
Para gerar hash MD5 de arquivos no Linux, veja as instrues em
http://roneymedice.com.br/2009/07/30/gerando-hash-md5-dos-arquivos-no-linux/. J na pgina
http://www.mundodoshackers.com.br/como-gerar-e-checar-hashs-md5 voc encontra instrues tambm
para Windows (porm os exemplos mostram gerao de hash para strings, no para arquivos).
Universidade Federal do Esprito Santo Programao III
avaliao subjetiva (mais detalhes na prxima seo). Para que os testes automticos
funcionem, o arquivo compactado enviado por e-mail deve estar no formato zip com o
nome trabalho.zip e conter o arquivo de build (explicaes a seguir) e o cdigo-fonte.
O arquivo enviado no deve conter nenhuma classe compilada. Os testes automticos
sero executados no diretrio onde encontra-se o arquivo de build. O cdigo-fonte pode
ser organizado da forma que a dupla achar melhor, desde que o arquivo de build esteja
adequado a esta estrutura.
$ ./test.sh
Script de teste Prog3 2017/1 - Trabalho 1
$ ./test.sh
Script de teste Prog3 2017/1 - Trabalho 1
Universidade Federal do Esprito Santo Programao III
O script compara cada arquivo de sada gerado pelo trabalho do aluno com o arquivo de
sada gerado pela implementao do professor. No exemplo acima, nenhum erro foi
encontrado e tudo est OK. Quando diferenas so encontradas, as mesmas so
mostradas na tela e implicam perda de pontos na correo automtica. O aluno deve,
portanto, tentar reduzir o nmero de diferenas ao mximo possvel antes de entregar o
trabalho.
Nota: alguns testes podem indicar tudo OK no arquivo output.txt, porm este arquivo no
foi citado na especificao. Na verdade, este um arquivo temporrio criado pelo script
para os casos em que h inconsistncia no trabalho e o programa deve imprimir uma
mensagem na tela. O script direciona as impresses de tela para este arquivo temporrio
e compara com a resposta oficial do professor.
Para testar o seu trabalho, crie uma pasta com um nome qualquer dentro do mesmo
diretrio em que se encontra o script test.sh e copie seu cdigo-fonte para esta pasta.
Alm do cdigo-fonte, crie um arquivo de build do Apache Ant (http://ant.apache.org) que
indique como compilar e executar seu programa.
Os arquivos fonte podem estar organizados da forma que voc achar melhor, desde que o
Ant consiga compil-los, executar as classes geradas e limpar o projeto. Para que isso seja
feito de forma automatizada, o arquivo de build do Ant deve, obrigatoriamente, encontrar-
se na raiz da pasta criada e chamar-se build.xml. Alm disso, ele deve ser feito de
forma a responder aos seguintes comandos:
Comando Resultado esperado
ant compile O cdigo-fonte deve ser compilado, gerando os arquivos
.class para todas as classes do trabalho.
Universidade Federal do Esprito Santo Programao III
Caso voc no implemente as opes read-only e write-only, faa com que os respectivos
comandos funcionem da mesma forma que o comando run, ou seja, efetuem a execuo
normal.
Segue abaixo um exemplo de arquivo build.xml que atende s especificaes acima. Em
negrito encontram-se marcados os dados que devem ser adaptados dependendo do
projeto:
src: subpasta onde encontra-se todo o cdigo-fonte;
bin: subpasta onde sero colocadas as classes compiladas;
meupacote.MinhaClassePrincipal: nome da classe principal do programa,
ou seja, aquela que possui o mtodo main().
<project name="TrabalhoProg3_2017_1" default="compile" basedir=".">
<description>Arquivo de build do trabalho de Prog3, 2017/1.</description>
Recuperao de pontos7: ser dado 1 ponto extra ao grupo que preparar e enviar ao
professor, at o prazo do trabalho 1, dois conjuntos de arquivos de entrada (docentes.csv,
veiculos.csv, publicacoes.csv, qualis.csv e regras.csv) que atendam aos seguintes critrios:
No conter trechos iguais a outros arquivos de teste disponveis no site (ou seja,
no copiar);
Conter o cadastro de pelo menos 5 docentes, 20 veculos, 30 publicaes
espalhadas pelos anos 2013 a 2016 (ao menos 10 delas devem ter mais de um
autor), qualificao dos veculos em 3 anos diferentes e 2 regras de pontuao:
uma para 2017 e outra para 2018;
Assim como o cdigo-fonte do trabalho, os arquivos devem estar em formato
Unicode (UTF-8);
Os dois conjuntos de arquivos devem ser quase iguais: um deles no deve ter
inconsistncia nenhuma enquanto o outro deve apresentar 1 inconsistncia de
dados (a escolha do grupo), como descrito na seo 0.
Os arquivos de teste enviados podero, a critrio do professor, ser disponibilizados aos
demais alunos como parte do script de testes. Atualizaes do script sero divulgadas em
sala de aula.
Na tabela de horrios que se apresenta, cada dupla deve agendar um horrio, dentre os
horrios disponveis, at as respectivas datas limite, com durao de 30 minutos e
fornecendo os dados solicitados pelo formulrio (nome e e-mail). Para o propsito da
reunio, selecionar a opo Aluno(a) de Programao 3.
Ateno aos seguintes detalhes sobre o agendamento:
O sistema s permite agendamentos com antecedncia mnima de 8 horas (e
mxima de 2 semanas);
O sistema bloqueia automaticamente horrios j reservados ou em que o professor
tenha outros compromissos;
de responsabilidade do aluno achar um horrio disponvel. Planeje-se com
antecedncia para evitar problemas de ltima hora (ex.: falta de horrios
adequados).
7
Idem seo 3.
Universidade Federal do Esprito Santo Programao III
Uma vez agendada a reunio, os alunos devem comparecer sala do professor (UFES,
CT-7, trreo, sala 17) para a entrevista pontualmente no dia e hora marcados. A
apresentao do trabalho pode ser feita em computador porttil trazido pelos alunos ou
no computador do professor. Em qualquer caso, os alunos devem tambm trazer o
cdigo-fonte do trabalho em disco removvel (pen-drive) para o professor (ou t-lo
enviado por e-mail anteriormente).
A entrevista consiste em uma apresentao do cdigo do trabalho feita pelos alunos.
Durante esta apresentao, os alunos sero questionados individualmente sobre
detalhes do trabalho e sero avaliados com relao s respostas fornecidas. Os critrios
de avaliao so descritos na seo a seguir.
5. Critrios de avaliao
Os trabalhos sero avaliados em duas etapas:
Avaliao objetiva (com testes automticos), valendo 10 pontos;
Avaliao subjetiva (entrevistas), valendo 10 pontos.
A nota final do trabalho a mdia aritmtica simples entre as notas acima. Para a
avaliao objetiva, todo trabalho possui inicialmente nota 10 e sofre modificaes nas
situaes descritas na tabela abaixo:
Situao Modificao
No foi feito em dupla (exceto casos previamente autorizados) -2
No observou as regras para envio do trabalho. -1
No compilou nos testes automticos, mas foi possvel compilar
-3
manualmente (ex.: arquivos no codificados em UTF-8).
No compilou nem manualmente. -10
No gerou sadas nos testes automticos. -5
No gerou sadas nem manualmente. -8
Pequenas diferenas das sadas em relao ao teste automtico (ex.:
-1
formatao, arredondamentos, etc.).
Grandes diferenas das sadas em relao ao teste automtico (ex.:
-2
valores sensivelmente diferentes).
Entrega fora do prazo. -1 por dia
Opes --read-only e --write-only funcionaram no teste
+2
automtico.
Para avaliao subjetiva, novamente os trabalhos comeam com nota 10 e perdem pontos
(que variam de acordo com a avaliao feita pelo professor) caso no estejam bem
Universidade Federal do Esprito Santo Programao III
6. Pontos extra8
Para incentivar alunos que desejarem aprender contedos avanados da linguagem Java
por conta prpria, 9 so oferecidos pontos extra para os alunos que demonstrarem na
entrevista do trabalho 2 que adicionaram uma ou mais das seguintes funcionalidades ao
programa do trabalho 1:
8
Ao contrrio da recuperao de nota, os pontos extras permitem que a nota do trabalho Java ultrapasse o
valor mximo de 10 pontos. No entanto, no clculo da mdia parcial do aluno, a nota mxima continua
sendo 10, no podendo ser ultrapassada.
9
Os alunos devem buscar recursos prprios para aprender tais tecnologias, visto que no h tempo hbil
durante o semestre para aulas destes assuntos. O professor, no entanto, possui alguns materiais que pode
indicar para os alunos interessados.
Universidade Federal do Esprito Santo Programao III
A coluna Pontos extra indica o mximo de pontos extra que podem ser obtidos pela
implementao da funcionalidade extra correspondente. A pontuao exata ser
estabelecida pelo professor aps avaliada a qualidade do cdigo, que deve ser explicado
pelos alunos, e do resultado (ex.: quo bem feita a interface grfica/web?).
Note que o trabalho Java para correo automtica deve ser enviado no prazo do trabalho
1. Posteriormente ele pode ser utilizado como base para criao do programa com
interface grfica/Web ou banco de dados para obteno dos pontos extra, porm ao
envi-lo para a correo no prazo inicial ele deve responder aos scripts dos testes
automticos, do contrrio sofrer as penalidades descritas na especificao da correo
objetiva.
Esta opo no oferecida para os trabalhos C++.
7. Observaes finais
Caso haja algum erro neste documento, sero publicadas novas verses e divulgadas
erratas em sala de aula. responsabilidade do aluno manter-se informado, frequentando
as aulas ou acompanhando as novidades na pgina da disciplina na Internet.