Código: | EIC0028 | Sigla: | COMP |
Áreas Científicas | |
---|---|
Classificação | Área Científica |
OFICIAL | Programação |
Ativa? | Sim |
Página Web: | https://moodle.up.pt/course/view.php?id=1034 |
Unidade Responsável: | Departamento de Engenharia Informática |
Curso/CE Responsável: | Mestrado Integrado em Engenharia Informática e Computação |
Sigla | Nº de Estudantes | Plano de Estudos | Anos Curriculares | Créditos UCN | Créditos ECTS | Horas de Contacto | Horas Totais |
---|---|---|---|---|---|---|---|
MIEIC | 164 | Plano de estudos a partir de 2009/10 | 3 | - | 6 | 56 | 162 |
Fornecer os conceitos que permitam:
- compreender as fases de compilação de linguagens, em especial das linguagens imperativas e orientada por objectos;
- especificar a sintaxe e semântica de uma linguagem de programação;
- compreender e utilizar as estruturas de dados e os algoritmos principais usados na implementação de compiladores.
As competências adquiridas permitirão aos estudantes:
- desenvolver e implementar em software processadores de linguagens artificiais e de informação especificada textualmente segundo determinadas regras lexicais e sintácticas;
- conceber e implementar em software as várias etapas relacionadas com compiladores, nomeadamente:
- expressões regulares e autómatos finitos;
- analisadores sintácticos e semânticos;
- analisadores semânticos;
- optimizações de código;
- geradores de código para processadores ou para máquinas virtuais;
Linguagens de programação imperativas, orientadas por objetos.
Algoritmos e estruturas de dados.
Teoria da Computação.
- Introdução. Fases da compilação e estrutura típica de um compilador.
- Análise lexical. Expressões regulares e autómatos finitos.
- Análise sintáctica. Gramáticas. Implementação de analisadores sintácticos. Tratamento de erros.
- Análise semântica. Implementação de analisadores semânticos. Verificação de tipos.
- Ambientes de execução. Organização de memória e mecanismos para a passagem de parâmetros.
- Geração de código intermédio de baixo e de alto-nível.
- Alocação de registos.
- Técnicas de geração de código final e de optimização.
Aulas teóricas: exposição dos assuntos, acompanhada por exemplos e pela apresentação de pistas para resolução dos problemas das aulas práticas e do trabalho prático. Aulas teórico-práticas: resolução de problemas e discussão de questões relacionadas com o trabalho prático.
Designação | Peso (%) |
---|---|
Participação presencial | 0,00 |
Teste | 40,00 |
Trabalho laboratorial | 60,00 |
Total: | 100,00 |
Designação | Tempo (Horas) |
---|---|
Elaboração de projeto | 50,00 |
Estudo autónomo | 56,00 |
Frequência das aulas | 56,00 |
Total: | 162,00 |
Realização do trabalho prático com aproveitamento (nota igual ou superior a 50% da nota máxima do trabalho prático).
Não ultrapassar limite máximo (3) de faltas nas aulas TP
ÉPOCA NORMAL:
Nota final = ROUND(0,60*AD + 0,2*T1 + 0,2*T2)
- AD: nota da avaliação distribuída (trabalho prático) [0..20]
- T1: nota no primeiro teste [0..20]
- T2: nota no segundo teste [0..20]
O aluno obtém aproveitamento na disciplina na época normal se obtiver frequência (i.e., AD >=10 e um máximo de 3 faltas nas aulas TP), se obtiver uma nota individual de cada teste (T1 e T2) igual ou superior a 7 valores, uma nota média nos testes (T1 e T2) igual ou superior a 8 valores, e se obtiver Nota final igual ou superior a 10 valores.
ÉPOCA DE RECURSO:
Nota final = ROUND(0,60*AD + 0,40*EX)
- AD: nota da avaliação distribuída (trabalho prático) [0..20]
- EX: nota no exame de recurso [0..20]
O aluno obtém aproveitamento na disciplina na época de recurso se obtiver frequência (i.e., AD >=10 e um máximo de 3 faltas nas aulas TP), se obtiver uma nota no exame (EX) igual ou superior a 8 valores, e se obtiver Nota final igual ou superior a 10 valores.
Durante a UC os estudantes elaboram um projeto que requer uma grande percentagem dos tópicos focados na UC. Têm existido duas opções de projetos:
(a) O desenvolvimento completo de um mini-compilador. Normalmente, o projeto requer as várias etapas de um compilador tendo como ponto de partida uma linguagem de programação simplificada para a qual é normalmente dada uma gramática abstrata em EBNF. O compilador envolve normalmente uma etapa de geração de bytecodes Java.
(b) O desenvolvimento de um tradutor ou de um processador/interpretador de linguagens. Neste caso os projetos envolvem a análise sintática de programas numa linguagem de entrada, a representação da mesma numa representação intermédia, e a geração do código na linguagem destino ou da interpretação utilizando essa representação intermédia.
Durante o semestre são realizados dois pontos de verificação do trabalho realizado, das opções tomadas, e da distribuição e planeamento do trabalho a realizar pelos membros de cada grupo.
Realização do trabalho prático com aproveitamento (nota igual ou superior a 50% da nota máxima do trabalho prático). O trabalho prático, devido à sua extensão, terá de ser realizado no decurso do semestre lectivo.
ÉPOCA NORMAL:
- Testes T1 e T2.
ÉPOCA DE RECURSO:
- Exame de recurso (EX).
A classificação final é obtida como previamente estipulado na secção: "Cálculo da Classificação Final".
A classificação da componente distribuída (AD) não é susceptível de melhoria no ano lectivo em curso e conta para todas as épocas (normal e de recurso). A classificação obtida na componente relativa aos dois testes efectuados (T1 e T2) poderá ser melhorada através da realização do exame de recurso (EX) ou na ocorrência seguinte da UC. A classificação obtida na componente relativa ao exame de recurso (EX) poderá ser melhorada na ocorrência seguinte da UC.
Trabalho prático:
- Desenvolvimento das fases de análise léxica, análise sintática, análise semântica e geração de código de um compilador para uma linguagem imperativa simples.
- Este trabalho deverá ser realizado em grupos de no máximo 4 alunos.
Os testes (T1 e T2) e o exame de recurso (EX) são provas com consulta limitada.
Os estudantes que tenham obtido frequência no ano lectivo anterior (2017/2018) podem abdicar de uma nova classificação da componente distribuída (AD). Nesse caso, a nota AD obtida no ano lectivo anterior será utilizada nas fórmulas apresentadas para cálculo da nota final na disciplina.