Código |
11484
|
Ano |
1
|
Semestre |
S2
|
Créditos ECTS |
6
|
Carga Horária |
PL(30H)/T(30H)
|
Área Científica |
Informática
|
Tipo de ensino |
- Presencial.
|
Estágios |
- Não aplicável.
|
Objectivos de Aprendizagem |
Esta UC tem como objectivos providenciar aos estudantes: - adquirir competências de programação no paradigma declarativo, em particular funcional (usando a linguagem Haskell), através do estudo de tópicos avançados (semântica da programação, funções de ordem superior, sistemas de tipos, parsers, lazy evaluation, princípios de compilação e de execução de programas declarativos) -adquirir conhecimento para explorar as propriedades de um programa por forma a raciocinar sobre ele (p.e., provando matematicamente uma sua propriedade) e o poder transformar (p.e., num programa equivalente, mas mais eficiente)
No final desta UC o estudante deve ser capaz de: -resolver problemas de programação realistas utilizando o paradigma declarativo -analisar os programas que produz sob o ponto de vista semântico, da correcção e eficiência -manipular os programas que produz com o objectivo de os optimizar -perceber e usar os mecanismos de tipagem e de compilação por forma a produzir prog. optimizados
|
Conteúdos programáticos |
1. Introdução aos paradigmas da programação 2. Semânticas da programação: operacional, axiomática e denotacional 3. Variáveis, Funções e valores no paradigma funcional 4. Tipos estruturados, polimórficos, de ordem superior e sistemas de tipos 5. Aplicação aos algoritmos e às estruturas de dados 6. Avaliação preguiçosa 7. Princípios de compilação e de execução de programas funcionais 8. Princípios algébricos da programação funcional 9. Cálculo e transformação de programas
|
Metodologias de Ensino e Critérios de Avaliação |
Avaliação em Frequência: 2 Testes remotos com entrevista feita após cada teste (Cada teste vale 35% da nota final) Teste disponibilizado e submetido via Moodle. Entrevista via Zoom.
Trabalho prático em grupos com um máximo de 2 alunos (30%), defesa dos trabalhos remota (via Zoom).
Avaliação em Exame: Exame (20 valores)
Mínimos para ser aprovado à disciplina: Frequência >= 9.5 valores Exame >= 9.5 valores
Mínimos para admissão a exame: Média dos Testes >= 7 valores e Trabalho Prático >=7 valores
|
Bibliografia principal |
Apontamentos: -disponibilizados no Moodle na página da UC.
Livros: "Programming in Haskell”, 2nd Edition, Graham Hutton, Cambridge University Press, 2016 “Introduction to Functional Programming Using Haskell”, Richard Bird, Prentice Hall Press, 1998 “Real World Haskell”, Bryan O’Sullivan, Don Stewart, e John Gerzen, O’Reilly, 2008 “Types and Programming Languages”, Benjamin Pierce, The MIT Press. “The Implemementation of Functional Programming Languages”, Simon Peyton Jones, Prentice Hall International. “Foundation for Programming Languages”, J. Mitchell, Foundations of Computing, MIT Press, 1996. “Semantics with Applications An Appetizer”, H. R. Nielson and F. Nielson. Springer, 2007
|
Língua |
Português
|