Guia de Cursos

Queres conhecer a oferta de cursos da NOVA, nas áreas das licenciaturas, mestrados e doutoramentos?
No nosso Guia de Cursos encontras informação útil sobre Faculdades, Institutos e Escolas.
Podes ainda aceder a informações complementares necessárias a uma completa integração.

saber mais Guia de Cursos

Faculdade de Ciências e Tecnologia

Interpretação e Compilação de Linguagens

Código

8152

Unidade Orgânica

Faculdade de Ciências e Tecnologia

Departamento

Departamento de Informática

Créditos

6.0

Professor responsável

João Ricardo Viegas da Costa Seco, Luís Manuel Marques da Costa Caires

Horas semanais

5

Total de horas

61

Língua de ensino

Português

Objectivos

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

  1. Representar e manipular a sintaxe abstracta de uma linguagem como dados de um programa transformador
  2. Descrever a semântica de linguagens através de interpretadores, compiladores e verificadores de tipos
  3. Conceber e implementar compiladores para uma máquina virtual industrial

Competências complementares

  1. Raciocinar sobre sistemas complexos a vários níveis de abstração
  2. Propor e concretizar soluções gerais com base em princípios

Conteúdo

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)

Bibliografia

- “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.


Método de ensino

A metodologia pedagógica proposta para esta unidade curricular centra-se na construção gradual de uma linguagem de programação. O ponto de partida é uma linguagem núcleo de expressões aritméticas, à qual se vão acrescentando novos elementos fundamentais numa espiral até se obter uma linguagem com funções de primeira classe e de ordem superior, capazes de exprimir as construções mais sofisticadas das linguagens de programação como classes, mixins ou closures.  

Método de avaliação

Esta avaliação está elaborada com base no regulamento de avaliação recentemente aprovado na FCT.

Aviso: Esta página poderá mudar para pequenas afinações até ao primeiro dia de aulas. 

A avaliação divide-se em três componentes: teórico-prática, projeto e sumativa. As componentes teórico-prática e de projeto têm classificação mínima de 10 valores.

A componente de avaliação teórico-prática é realizada através de dois testes durante o semestre, ou por exame.

A componente de projeto consiste no desenvolvimento de um trabalho prático, realizado individualmente ou em grupo, avaliado através de um relatório e de uma apresentação e discussão oral. Tem frequência na unidade curricular quem obtiver aprovação na componente de projeto.

A componente sumativa é realizada através da resposta a trabalhos de casa por escrito ou online.

A classificação final será calculada como a média ponderada das 3 componentes arredondadas às décimas, com os seguintes pesos: componente teórico-prática 60%, componente projeto 30%, componente sumativa 10%.

Cursos