Compiladores/Projecto de Compiladores/Avaliação do Projecto (Época Normal)
From Wiki**3
< Compiladores | Projecto de Compiladores
AVISOS - Avaliação em Época Normal |
---|
Esclarecimento de dúvidas:
|
Requisitos para desenvolvimento, material de apoio e actualizações do enunciado (ver informação completa em Projecto de Compiladores):
|
Processo de avaliação (ver informação completa em Avaliação do Projecto):
|
Material de Uso Obrigatório |
---|
As bibliotecas CDK e RTS de apoio ao desenvolvimento do projecto são de uso obrigatório: |
|
A máquina virtual, fornecida para desenvolvimento do projecto, já contém todo o material de apoio. |
Uso Obrigatório: Repositório CVS |
Apenas se consideram para avaliação os projectos existentes no repositório CVS oficial.
Trabalhos não presentes no repositório no final do prazo têm classificação 0 (zero) (não são aceites outras formas de entrega). Não são admitidas justificações para atrasos em sincronizações do repositório. A indisponibilidade temporária do repositório, desde que inferior a 24 horas, não justifica atrasos na submissão de um trabalho. |
Método de Avaliação do Projecto
A avaliação relativa à componente do Projecto processa-se em várias fases:
- Entrega Zero (inicial): projecto base (obrigatória: ver condições abaixo)
- Entrega Intermédia: gerador de XML (ver condições abaixo)
- Entrega Final: compilador completo (obrigatória: ver condições abaixo)
- Teste prático (obrigatório: ver condições abaixo)
O Projecto de Compiladores (trabalho conducente às entregas acima mencionadas e abaixo descritas) é realizado por grupos de, no máximo, 2 (dois) elementos, durante o período estabelecido.
O Teste Prático é realizado individualmente, em data e local a agendar.
TODAS AS ENTREGAS SÃO REALIZADAS ATÉ ÀS 17:00 DAS RESPECTIVAS DATAS
Cálculo da Nota do Projecto e Condições de Aprovação
Componentes de avaliação:
- PRJ - nota final do projecto
- E0 - nota da entrega "zero"
- EI- nota da entrega intermédia
- EF- nota da entrega final
- TP - nota do teste prático
A nota do teste prático condiciona a distância ao mínimo entre as notas do teste prático e a do projecto: desde um mínimo de 12.5% de acréscimo à menor das duas (abaixo de 7.5 valores no TP), até um máximo de 25% (para 20 valores no TP). O acréscimo é linear entre 7.5 e 20.
Ou seja:
- PRJ = min(E0+EI+EF, TP) + | TP - E0 - EI - EF | * max(12.5, TP+5) / 100
Condições necessárias para aprovação à disciplina (necessárias todas):
- PRJ >= 9.5 (sem arredondamento)
- PRJ != NA
- TP > 0
- TP != NA
Entrega Zero (inicial) - Projecto Base
A Entrega "Zero" avalia o estado do projecto relativamente à concepção dos nós que representam os conceitos da linguagem (sem ser necessário tratar ainda do seu reconhecimento ou processamento).
Esta entrega tem uma classificação máxima de 2 valores.
Não serão executados testes automáticos nesta entrega.
Nesta fase, além da estrutura básica do compilador, todas as classes dos nós da linguagem, assim como os esqueletos dos "visitors" (xml_writer, postfix_writer, etc.) devem estar implementados. Não é ainda necessário ter implementado nenhum código de análise lexical, sintáctica ou semântica.
Considerando que é um passo crucial na concepção do projecto, a não realização desta entrega conduz automaticamente a uma classificação de 0 (zero) na componente de avaliação relativa ao Projecto e consequente exclusão da avaliação da disciplina no ano lectivo corrente.
Entrega Intermédia - Gerador de XML
A Entrega Intermédia avalia o estado do projecto relativamente a um mínimo de funcionalidade.
Esta entrega tem uma classificação máxima de 6 valores.
Não serão executados testes automáticos nesta entrega.
Os pormenores dos parâmetros de avaliação desta entrega serão anunciados em data próxima da entrega.
Entrega Final - Compilador Completo
A Entrega Final pressupõe que todo o projecto foi implementado.
Esta entrega tem uma classificação máxima de 12 valores.
Serão executados testes automáticos nesta entrega.
Os testes correspondem a uma série de programas que deverão ser compilados pelo resultado do projecto de cada grupo e cuja execução deve corresponder a um conjunto de resultados padrão.
A não realização da Entrega Final conduz automaticamente a uma classificação de 0 (zero) na componente de avaliação relativa ao Projecto e consequente reprovação à disciplina no ano lectivo corrente.
Teste Prático
O Teste Prático consiste em fazer pequenas alterações/extensões ao projecto descrito no enunciado. O teste é realizado com base na implementação submetida para a avaliação correspondente à entrega final.
Este teste avalia o conhecimento do aluno relativamente ao projecto entregue, assim como a sua capacidade de realizar alterações ao código do projecto.
O teste prático é como uma discussão de projecto, pelo que não existem repescagens como nos testes escritos. Alunos que faltem ao teste prático estão automaticamente reprovados à disciplina.
A não realização do Teste Prático conduz automaticamente a uma classificação de 0 (zero) na componente de avaliação relativa ao Projecto e consequente reprovação à disciplina no ano lectivo corrente.
Concretamente, o teste prático corresponde à resolução uma pergunta que aborda os seguintes três tópicos: análise lexical; análise sintáctica; e análise semântica e geração de código. Cada tópico pode ser resolvido com mais ou menos profundidade (embora isso implique funcionamento possivelmente deficiente a jusante) e será avaliado independentemente.
Considerações Adicionais sobre a Avaliação do Projecto
O projecto deverá ser desenvolvido ao longo do semestre. As versões intermédias registadas no CVS poderão ser testadas, pelo que deverão ser periodicamente actualizadas. O projecto é constituído por um projecto CVS designado pelo número do grupo que o executa. O repositório CVS disponibilizado já contém uma versão vazia do projecto. Apenas os ficheiros registados no projecto CVS serão considerados na avaliação.
Não serão consideradas quaisquer alterações aos ficheiros disponibilizados: eventuais cópias desses ficheiros serão automaticamente substituídas durante a avaliação da funcionalidade do código submetido.
A avaliação executa testes automáticos aos programas na linguagem a implementar: caso os testes falhem por causas imputáveis ao grupo, a nota reflectirá apenas os testes bem sucedidos. Para tal, o compilador deve chamar-se "zu" e não "ZU", "proj", "compiladores", "projecto", ou outro nome (a makefile fornecida já faz este trabalho). As restantes componentes da nota são obtidas pela análise do código e resultado do teste prático (realizado individualmente). O código é avaliado quanto à sua correcção, simplicidade, extensibilidade e legibilidade: devem existir comentários das partes mais complexas, mas não devem ser excessivos nem óbvios (diminuem a legibilidade), nem muito escassos (impedem a compreensão). O teste prático avalia a capacidade de efectuar alterações ao código entregue.
Qualquer alteração à especificação da linguagem é penalizada, mesmo que possa ser entendida como um melhoramento. Pretende-se realizar um compilador para a linguagem indicada no manual de referência e não que cada grupo invente uma nova linguagem, mesmo que baseada na especificação fornecida.
Notar que o facto de os testes automáticos terem sido superados não reflecte a qualidade do código, quer do ponto de vista de engenharia de software, quer do ponto de vista da correcta aplicação dos princípios leccionados na disciplina. A funcionalidade do compilador final é de extrema importância, pelo que é preferível um compilador que realize, correctamente, apenas parte da funcionalidade a um quase completo mas que nem sequer compila ou que não gera nenhum programa correcto.
Compromisso de Honra
A entrega de qualquer trabalho pressupõe o compromisso de honra que o trabalho correspondente foi realizado pelos alunos referenciados no grupo. A quebra deste compromisso, i.e., a tentativa de um grupo se apropriar de trabalho realizado por colegas, tem como consequência a reprovação de todos os alunos envolvidos (incluindo os que possibilitaram a ocorrência) neste ano lectivo.