Fundamentos de Linguagens de Programação
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Ciência de Computadores |
Ocorrência: 2024/2025 - 1S 
Ciclos de Estudo/Cursos
Docência - Responsabilidades
Língua de trabalho
Português - Suitable for English-speaking students
Objetivos
Estudo de modelos formais semânticos de linguagens de programação, de forma a compreender os mecanismos envolvidos na definição, desenho e implementação de linguagens de programação.
Resultados de aprendizagem e competências
Os alunos vão adquirir conhecimentos sobre modelos formais semânticos de linguagens de programação.
Pretende-se ainda desenvolver as capacidades técnicas e os mecanismos envolvidos na definição, desenho e implementação de linguagens de programação.
Com os conhecimentos adquiridos, os alunos deverão ser capazes de formalizar o conceito de qual o significado de um programa.
Os alunos deverão também ser capazes de aplicar os conceitos aprendidos ao desenho de uma linguagem de programação.
Modo de trabalho
Presencial
Programa
- Lambda-calculus: sintaxe, reduções, codificação de construtores típicos de linguagens de programação.
- Sistemas de tipos: o sistema de tipos simples à la Curry para o lambda-calculus; polimorfismo paramétrico. Inferência de tipos.
- Semânticas operacionais. Técnicas de demonstração de propriedades de semânticas operacionais.
- Teoria de domínios: Ordens parciais completas (CPOs). Funções contínuas. Teorema do ponto-fixo.
- Semântica denotacional de linguagens de programação.
- Relação entre as semânticas operacionais e denotacionais.
- Semânticas de linguagens com não-determinismo, paralelismo e blocos.
- Noções extra de semânticas de linguagens de programação.
Bibliografia Obrigatória
Hanne Riis Nielson;
Semantics with applications. ISBN: 978-1-84628-691-9
Chris Hankin;
An introduction to Lambda calculi for computer scientists. ISBN: 0-9543006-5-3
Bibliografia Complementar
Glynn Winskel;
The formal semantics of programming languages. ISBN: 978-0-262-23169-5
Hendrik Pieter Barendregt;
The lambda calculus. ISBN: 0-444-85490-8
Maribel Fernández;
Programming languages and operational semantics. ISBN: 0-9543006-3-7
Métodos de ensino e atividades de aprendizagem
Aulas teóricas-práticas com exposição de matéria e resolução de exercícios.
Software
Glasgow Haskell Compiler
Palavras Chave
Ciências Físicas > Matemática > Lógica matemática
Ciências Físicas > Matemática > Matemática discreta
Ciências Físicas > Ciência de computadores
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Designação |
Peso (%) |
Teste |
100,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Estudo autónomo |
120,00 |
Frequência das aulas |
42,00 |
Total: |
162,00 |
Obtenção de frequência
Sem critérios de frequência.
Fórmula de cálculo da classificação final
Há dois testes na disciplina, cada um deles com nota mínima de 6 valores em 20.
A nota final é média aritmética das notas dos testes.
Nota final = 0.5 * Teste 1 + 0.5 * Teste 2
Quem não alcançar a nota mínima num dos testes não tem aprovação à disciplina, mas poderá fazer um exame de recurso aos dois testes ou só a um deles.