Semânticas 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
Objetivos
Introdução aos diferentes paradigmas de linguagens de programação e às suas diferentes escolhas/conceitos. Pretende-se estudar as componentes principais das linguagens de programação e algumas das ferramentas usadas para descrever de forma precisa o comportamento das suas primitivas principais. O conhecimento da descrição precisa do comportamento dos programas que permite melhorar a sua implementação e eficiência.
Resultados de aprendizagem e competências
No final do semestre pretende-se que o estudante seja capaz de descrever e formalizar os aspetos essenciais de cada paradigma, assim como compreender as ferramentas necessárias ao desenvolvimento de novas linguagens de programação.
Modo de trabalho
Presencial
Pré-requisitos (conhecimentos prévios) e co-requisitos (conhecimentos simultâneos)
Lógica computacional, Modelos de computação, conhecimentso de linguagens de programação imperativas. funcionais e se possivel lógicas
Programa
Introdução aos diferentes paradigmas de linguagens de programação. Sintaxe, semântica e implementação de linguagens. Sistemas de transição.
- Linguagens de programação imperativas:
- Conceitos gerais: variáveis, atribuição, instruções de controle, blocos;
- Semânticas operacionais: máquinas abstratas, semânticas operacionais estruturais;
- Linguagens de programação funcionais:
- Conceitos gerais, definição de funções, recursão
- Introdução ao lambda-calculus
- Sistemas de tipos
- Semântica operacional
- Linguagens de programação lógicas:
- Conceitos gerais: termos, predicados, clausulas, unificação, resolução
- Universo de Herbrand
- Semântica operacional e denotacional
Bibliografia Obrigatória
Hanne Riis Nielson;
Semantics with applications. ISBN: 978-1-84628-691-9
Maribel Fernández;
Programming languages and operational semantics. ISBN: 0-9543006-3-7
Bibliografia Complementar
Thérèse Hardin, Mathieu Jaume, François Pessaux, Véronique Viguié Donzeau-Gouge; Concepts and Semantics of Programming Languages: a semantical approach with Python and Ocaml , Wiley, 2021. ISBN: 9781786305305
Flemming Nielson;
Formal methods. ISBN: 978-3-030-05156-3 (Ebook)
Robert W. Sebesta; Concepts of Programming Languages, Pearson, 2018. ISBN: 9780135102268
Kent D. Lee; Foundations of Programming Languages, Springer, 2017. ISBN: 978-3-319-70789-1
Richard Bird;
Introduction to functional programming using Haskell. ISBN: 978-0-13-484346-9 pbk
Métodos de ensino e atividades de aprendizagem
Aulas expositivas e aulas de resolução de problemas e casos de estudo.
Avaliação distribuída sem exame final. Serão propostos dois testes com peso de 50%.
Serão propostos trabalhos de resolução de problemas sobre os diversos tópicos da matéria. Poderão ser também propostos trabalhos práticos de implementação dos conceitos expostos. Assim serão assegurados os objetivos propostos. Os testes e exame final têm como objetivo garantir que os objetivos principais da aprendizagem foram atingidos.
Software
Linguagem Prolog
Linguagem Haskell
Programming Languages Zoo (http://plzoo.andrej.com)
Tipo de avaliação
Avaliação distribuída sem exame final
Componentes de Avaliação
Designação |
Peso (%) |
Exame |
50,00 |
Teste |
50,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Estudo autónomo |
114,00 |
Frequência das aulas |
48,00 |
Total: |
162,00 |
Obtenção de frequência
Assistência a 3/4 das aulas práticas.
Fórmula de cálculo da classificação final
Os alunos deverão obter um mínimo de 6 valores (em 20) em cada um dos testes. O primeiro realiza-se a meio do semestre e o segundo na data prevista para o exame normal.
Teste intercalar (50% de peso na nota final).
Exame final (50% de peso na nota final).
Sendo TI a classificação obtida no teste intercalar e EF a
classificação obtida no exame final, então a nota final é dada por:
F = TI*(0.5) + EF*(0.5)
TI,EF >= 6 e F >= 9.5
O exame de recurso é para 20 valores e têm acesso os estudantes com frequência.
Provas e trabalhos especiais
Poderá haver um trabalho prático com a cotação até 3 valores da nota total (na época normal e de recurso).
Avaliação especial (TE, DA, ...)
Os critérios de avaliação são os mesmos para todos os estudantes.
Melhoria de classificação
Será possível fazer melhoria de classificação em época de recurso.
Observações
Aconselhada aprovação a Lógica Computacional