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

Linguagens de Programação e Compiladores

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 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 AVALIAÇÃO EM PERÍODO ENSINO-APRENDIZAGEM
Labs (L) - 50% da nota final:
Total de 10 Labs, têm o mesmo peso na avaliação, com defesa obrigatória. A não submissão de dois ou mais Labs nos prazos indicados, implica a reprovação e não admissão a exames.
Projeto Laboratorial (PL) - 50% da nota final:
Projeto prático de construção de um pequeno compilador. Grupo de 2 alunos e submissão obrigatória, a não submissão de pelo menos uma das fases nos prazos indicados, implica a reprovação e não admissão a exames.

AVALIAÇÃO EM ÉPOCA DE EXAMES
Labs (L) - 50% da nota final:
Não são recuperáveis em época de exame, a nota transita do PERÍODO ENSINO-APRENDIZAGEM.
Projeto Laboratorial (PL) - 50% da nota final:
Recuperável em época de exame, projeto prático de construção de um pequeno compilador. Grupo de 2 alunos e submissão obrigatória, a não submissão de pelo menos uma das fases nos prazos indicados, implica a reprovação.
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-23
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.