Esta unidade curricular tem por objectivo transmitir conhecimentos sólidos na concepção e implementação de linguagens de programação e das ferramentas associadas, através do estudo de conceitos sintácticos, semânticos e pragmáticos fundamentais.
Saber
1.Conhecer a arquitetura e técnicas usadas no desenho de interpretadores, compiladores e sistemas de tipos
2.Conhecer os elementos base das linguagens de programação e a sua semântica
3.Definir linguagens de programação por composição de elementos fundamentais
Saber Fazer
4.Representar e manipular a sintaxe abstracta de uma linguagem como dados de um programa transformador
5.Descrever a semântica de linguagens através de interpretadores, compiladores e verificadores de tipos
6.Conceber e implementar compiladores para uma máquina virtual industrial
Competências complementares
7.Raciocinar sobre sistemas complexos a vários níveis de abstração
8.Propor e concretizar soluções gerais com base em princípios
A.Princípios
1.Sintaxe das Linguagens de Programação
2.Semântica das Linguagens de Programação
3.Níveis de Interpretação (Interpretação, compilação e sistemas de tipos)
B.Interpretação de Programas
1.Valores e Expressões: Definições e Ambiente
2.Estado e Referências: Modelo ambiente-memória
3.Abstração funcional: funções de primeira classe e ordem superior
4.Definições recursivas e ambientes circulares
5.Valores estruturados: registos e valores recursivos
6.Objetos e classes: representação de objetos usando registos e fechos
C.Sistemas de Tipos
1.Princípios, objectivos e limitações da análise estática
2.Sistemas de tipos simples
3.Algoritmos de verificação e inferência de tipos
D.Compilação de Programas
1.Arquitetura de um compilador
2.Ambientes de suporte à execução (máquinas de registos, pilha de avaliação, pilha de chamada)
3.Tradução de código dirigida pela sintaxe
4.Geração de código para uma máquina virtual industrial (CLR,LLVM)
- “Concepts in Programming Languages”, John C. Mitchell, Cambridge University Press. ISBN 0 521 78098 5
- “Essentials of Programming Languages”, Daniel Friedman, Mitchell Wand, Christopher Haynes, MIT Press.
- “Compiling for the .Net Common Language Runtime (Clr) (.NET Series)”, John Gough, Prentice Hall PTR
- “Modern Compiler Implementation in Java” Andrew W. Appel, Cambridge University Press
- “The Study of Programming Languages”, Ryan Stansifer, Prentice Hall International Edition.
Gosto pela construção de software, criatividade e bom aproveitamento em UCs como AED, LAP.
Horas por crédito | 28 | ||
Horas p/ semana | Semanas | Horas | |
Total de Horas | 0 | ||
ECTS | 6.0 |