Conteúdo / Main content
Menu Rodapé
  1. Início
  2. Cursos
  3. Matemática e Aplicações
  4. Linguagens de Programação e Compiladores

Linguagens de Programação e Compiladores

Código 15659
Ano 2
Semestre S1
Créditos ECTS 6
Carga Horária PL(30H)/T(30H)
Área Científica Informática
Objectivos de Aprendizagem Os estudantes deverão adquirir as seguintes competências:

Conceber, planear, desenhar 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.
Conceber front end e back-ends de compiladores, sistemas de tipo poderosos e modernos, optimizadores de código;
Conceber, planear, desenhar e implementar linguagens de programação;
Conceber e implementar em software as várias etapas relacionadas com a construção de compiladores, perceber em que medida podem ser usadas fora do contexto da compilação;
Concerber desenhar e implementar analisadores estáticos de programas para a optimização e o controlo comportamental de programas (segurança, perfil, depuração, optmização, etc.);
Perceber os detalhes internos da linguagens de programação.
Conteúdos programáticos Aula 1 - Assembly x86-64
Aula 2 - Sintaxe abstracta, semântica formal, interpretadores
Aula 3 - Tipagem, sistemas e algoritmos
Aula 4 - Análise léxica
Aula 5 - Análise sintáctica (descendente) - ficheiro com o código do analisador exposto nas aulas (aqui)
Aula 6 - Análise sintáctica (ascendente)
Aula 7 - Compilação de linguagens imperativas, modos de passagem de parâmetros
Aula 8 - Compilação das linguagens funcionais
Aula 9 - Compilação das linguagens orientadas a objectos
Aula 10 - Alocação de memória
Aula 11 - Produção de código eficiente -
Aula 12 - Ordens, reticulados e a framework monótona
Aula 13 - Análise de fluxo de dados
Aula 14 - Path Sensitivity, análise interprocedural e análise de fluxo de controlo
Aula 15 - Análise de apontadores
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 Andrew A. Appel. Modern Compiler Implementation in ML.
A. V. Aho, M. S. Lam, R. Sethi, and J. D. Ullman, Compilers: Principles, Techniques, and Tools, 2nd edition, Addison Wesley, 2006. ISBN 0-321-48681-1.
Benjamin C. Pierce. Types and Programming Languages.
Flemming Nielson, Hanne R. Nielson, and Chris L. Hankin. Principles of Program Analysis.
Hanne. R. Nielson and Flemming Nielson. Semantics with Applications - an appetizer.
Anders Møller and Michael I. Schwartzbach. Static Program Analysis.
Randal E. Bryant et David R. O’Hallaron. Computer Systems: A Programmer’s Perspective.
Língua Português
Data da última atualização: 2023-10-12
As cookies utilizadas neste sítio web não recolhem informação pessoal que permitam a sua identificação. Ao continuar está a aceitar a política de cookies.