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:

  • Consultar sempre o corpo docente atempadamente: presencialmente ou através do endereço oficial da disciplina [1].
  • Não utilizar fontes de informação não oficialmente associadas ao corpo docente (podem colocar em causa a aprovação à disciplina).
  • Não são aceites justificações para violações destes conselhos: quaisquer consequências nefastas são da responsabilidade do aluno.

Requisitos para desenvolvimento, material de apoio e actualizações do enunciado (ver informação completa em Projecto de Compiladores):

  • O material de apoio é de uso obrigatório e não pode ser alterado.
  • Verificar atempadamente (mínimo de 48 horas antes do final de cada prazo) os requisitos exigidos pelo processo de desenvolvimento.

Processo de avaliação (ver informação completa em Avaliação do Projecto):

  • Datas: 2024/04/29 17:00 (inicial); 2024/05/14 17:00 (intercalar); 2024/05/31 17:00 (final); 2024/05/31-2024/06/03-04 (teste prático).
  • Todas as entregas são cruciais para o bom desenvolvimento do projecto, sendo obrigatórias: a não realização de uma entrega implica a exclusão da avaliação do projecto e, por consequência, da avaliação da disciplina.
  • Verificar atempadamente (até 48 horas antes do final de cada prazo) os requisitos exigidos pelo processo de avaliação, incluindo a capacidade de acesso ao repositório.
  • Apenas se consideram para avaliação os projectos existentes no repositório oficial. Apenas se considera para avaliação o ramo 'main'.
  • 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.
  • A avaliação do projecto pressupõe o compromisso de honra de que o trabalho correspondente foi realizado pelos alunos correspondentes ao grupo de avaliação.
  • Fraudes na execução do projecto terão como resultado a exclusão dos alunos implicados do processo de avaliação em curso.
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 GIT
Apenas se consideram para avaliação os projectos existentes no repositório GIT oficial. Apenas se considera para avaliação o ramo main.

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:

O Projecto (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.

A não realização de componentes obrigatórias tem como consequência a classificação de zero valores na componente de projecto e exclusão da avaliação em época normal.

TODAS AS ENTREGAS SÃO OBRIGATÓRIAS E 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 é obrigatória e 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.

Ver pormenores na pauta da avaliação da entrega "zero".

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. A ausência de material relevante para a entrega será considerada uma não entrega, conduzindo a reprovação.

Entrega Intermédia - Gerador de XML

A Entrega Intermédia avalia o estado do projecto relativamente a um mínimo de funcionalidade.

Esta entrega é obrigatória e tem uma classificação máxima de 6 valores.

Não serão executados testes automáticos nesta entrega.

Ver pormenores na pauta da avaliação da entrega intermédia.

A não realização da Entrega Intermédia 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. A ausência de material relevante para a entrega será considerada uma não entrega, conduzindo a reprovação.

Entrega Final - Compilador Completo

A Entrega Final pressupõe que todo o projecto foi implementado.

Esta entrega é obrigatória e 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. A ausência de material relevante para a entrega será considerada uma não entrega, conduzindo a reprovação.

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 atempadamente ao longo do semestre.

As versões intermédias registadas no Gitlab poderão ser testadas, pelo que deverão ser periodicamente actualizadas. O projecto é constituído por um projecto Gitlab designado pelo número do grupo que o executa. O repositório GIT disponibilizado já contém uma versão vazia do projecto. Apenas os ficheiros registados no projecto Gitlab 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 til e não "TIL", "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.

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. No entanto, a funcionalidade do compilador final também é importante, 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 quaisquer trabalhos pressupõe o compromisso de honra que foram realizados pelos autores referenciados. A quebra deste compromisso, i.e., a tentativa de apropriação de trabalhos alheios, terá como consequência a reprovação de todos os alunos envolvidos (incluindo os que possibilitaram a ocorrência) no ano lectivo actual, sem prejuízo de acções disciplinares previstas pelo IST.