Código |
14460
|
Ano |
1
|
Semestre |
S1
|
Créditos ECTS |
6
|
Carga Horária |
PL(30H)/T(30H)
|
Área Científica |
Informática
|
Objectivos de Aprendizagem |
• Compreender a contribuição dos compiladores para a fiabilidade dos sistemas de software; • Compreender os diferentes aspectos das linguagens de programação através da sua compilação; • Compreender os mecanismos subjacentes à compilação: a tradução de uma linguagem para outra, a sua otimização e a funcionalidade das diferentes fases; • Compreender a relação entre linguagem de alto nível, representação intermédia, análises e optimizações; • Compreender o processo de geração de código para arquitecturas de computadores modernas, incluindo máquinas virtuais; • Implementar um compilador para uma linguagem de programação realista ou extender uma já existente; • Selecionar ferramentas modernas para implementar partes de compiladores e interpretar a sua funcionalidade; e • Comunicar os resultados obtidos de forma clara e precisa, utilizando um relatório técnico.
|
Conteúdos programáticos |
A. Programação Assembly RISC-V B. Sintaxe abstracta, semântica e interpretadores C. Análise lexical e sintáctica D. Tipagem E. Estratégias de avaliação e passagem de parâmetros F. Compiladores de linguagens funcionais e orientadas a objectos G. Optimização do compilador H. Alocação de memória
|
Metodologias de Ensino e Critérios de Avaliação |
Os conteúdos desta unidade curricular são expostos em aulas teóricas (método expositivo e interativo) e a sua vertente prática é explorada em aulas práticas laboratoriais. Cada tipo de aula tem duas horas de contacto semanal. As aulas práticas regem-se por guias laboratoriais que os estudantes executam em computadores de laboratórios. Os trabalhos individuais e de grupo propostos são desenhados de modo a que os estudantes desenvolvam as capacidades técnicas descritas nos objetivos através do projeto e implementação de labs. Avaliam-se as componentes teóricas e práticas recorrendo a 3 elementos principais: - Labs 60% - 12 Valores; - Project 40% - 8 Valores.
|
Bibliografia principal |
Alfred V. Aho, Monica S. Lam, Ravi Sethi et Jeffrey D. Ullman. Modern Compilers: Principles, Techniques, and Tools. Benjamin C. Pierce. Types and Programming Languages. Randal E. Bryant et David R. O'Hallaron. Computer Systems: A Programmer's Perspective.
|
Língua |
Português
|