(→Considerações Adicionais sobre a Avaliação do Projecto) |
|||
(50 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{PRJHEADER}} |
− | |||
{{TOCright}} | {{TOCright}} | ||
== Método de Avaliação do Projecto == | == Método de Avaliação do Projecto == | ||
Line 6: | Line 5: | ||
A avaliação relativa à componente do Projecto processa-se em várias fases: | 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 Zero (inicial) - Projecto Base|Entrega Zero (inicial): projecto base]] ('''obrigatória''': ver condições abaixo) |
− | * Entrega Intermédia: gerador de XML (ver condições abaixo) | + | * [[#Entrega Intermédia - Gerador de XML|Entrega Intermédia: gerador de XML]] ('''obrigatória''': ver condições abaixo) |
− | * Entrega Final: compilador completo ('''obrigatória''': ver condições abaixo) | + | * [[#Entrega Final - Compilador Completo|Entrega Final: compilador completo]] ('''obrigatória''': ver condições abaixo) |
− | * Teste prático ('''obrigatório''': ver condições abaixo) | + | * [[#Teste Prático|Teste prático]] ('''obrigatório''': ver condições abaixo) |
− | O Projecto | + | <!--O Projecto (trabalho conducente às entregas acima mencionadas e abaixo descritas) é realizado individualmente, durante o período estabelecido.--> |
+ | 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. | O Teste Prático é realizado individualmente, em data e local a agendar. | ||
− | '''TODAS AS ENTREGAS SÃO REALIZADAS ATÉ ÀS 12:00 ("meio-dia") DAS RESPECTIVAS DATAS''' | + | '''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 REALIZADAS ATÉ ÀS 12:00 ("meio-dia") DAS RESPECTIVAS DATAS''' | ||
+ | --> | ||
+ | '''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 == | == Cálculo da Nota do Projecto e Condições de Aprovação == | ||
Line 21: | Line 25: | ||
Componentes de avaliação: | Componentes de avaliação: | ||
* '''PRJ''' - nota final do projecto | * '''PRJ''' - nota final do projecto | ||
− | * '''E0''' - nota da entrega | + | * '''E0''' - nota da entrega "zero" |
− | * '''EI'''- nota da entrega intermédia | + | * '''EI''' - nota da entrega intermédia |
− | * '''EF'''- nota da entrega final | + | * '''EF''' - nota da entrega final |
* '''TP''' - nota do teste prático | * '''TP''' - nota do teste prático | ||
Line 41: | Line 45: | ||
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). | 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. | + | '''Esta entrega é obrigatória e tem uma classificação máxima de 2 valores.''' |
Não serão executados testes automáticos nesta entrega. | Não serão executados testes automáticos nesta entrega. | ||
Line 47: | Line 51: | ||
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. | 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. | ||
− | '''<font color="red">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 | + | Ver pormenores na pauta da avaliação da entrega "zero". |
+ | |||
+ | '''<font color="red">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.</font>''' | ||
== Entrega Intermédia - Gerador de XML == | == Entrega Intermédia - Gerador de XML == | ||
Line 53: | Line 59: | ||
A Entrega Intermédia avalia o estado do projecto relativamente a um mínimo de funcionalidade. | 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. | + | '''Esta entrega é obrigatória e tem uma classificação máxima de 6 valores.''' |
Não serão executados testes automáticos nesta entrega. | Não serão executados testes automáticos nesta entrega. | ||
− | + | Ver pormenores na pauta da avaliação da entrega intermédia. | |
− | |||
− | |||
− | + | '''<font color="red">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.</font>''' | |
− | |||
== Entrega Final - Compilador Completo == | == Entrega Final - Compilador Completo == | ||
Line 68: | Line 71: | ||
A Entrega Final pressupõe que todo o projecto foi implementado. | A Entrega Final pressupõe que todo o projecto foi implementado. | ||
− | Esta entrega tem uma classificação máxima de 12 valores. | + | '''Esta entrega é obrigatória e tem uma classificação máxima de 12 valores.''' |
Serão executados testes automáticos nesta entrega. | 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. | 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. | ||
− | |||
− | |||
− | + | '''<font color="red">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.</font>''' | |
− | |||
− | |||
− | '''<font color="red">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.</font>''' | ||
== Teste Prático == | == Teste Prático == | ||
Line 99: | Line 97: | ||
== Considerações Adicionais sobre a Avaliação do Projecto == | == 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 | + | '''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.''' | '''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 | + | 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 | + | '''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. | + | 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 == | == Compromisso de Honra == | ||
− | A entrega de | + | 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. |
[[category:Projecto de Compiladores]] | [[category:Projecto de Compiladores]] | ||
[[category:Compiladores]] | [[category:Compiladores]] | ||
[[category:Ensino]] | [[category:Ensino]] |
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 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. |
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
Componentes de avaliação:
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:
Condições necessárias para aprovação à disciplina (necessárias todas):
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.
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.
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.
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.
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.
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.