Programação Funcional
Informação geral
Código: 14294
Área científica predominante: Informática
Regime: Semestral
ECTS: 5
Tipo de ensino: Presencial
Carga Horária
Trabalho autónomo: 80 Horas
Aulas:
30 horas - Teóricas
30 horas - Teórico-práticas
Objetivos de ensino
Esta UC corresponde a uma introdução ao paradigma funcional da programação.
É usada a linguagem de programação Haskell que não requer dos alunos conhecimentos sobre a arquitetura física dos computadores e que para além dos tópicos fundamentais da programação funcional permite abordar conceitos avançados.
Resultados de aprendizagem
No fim da disciplina, o aluno deverá ser capaz de:
- Resolver problemas de programação decompondo-os em problemas mais pequenos;
- Desenvolver e implementar algoritmos recursivos sobre listas e sobre árvores;
- Desenvolver programas tirando partido da utilização de funções de ordem superior;
- Aplicar a noção de tipo principal e de polimorfismo;
- Definir tipos algébricos, enquadrá-los na hierarquia de classes e programar com esses tipos;
- Escrever programas interativos.
Programa sucinto
- Introdução ao paradigma funcional de programação. Aspectos básicos da linguagem Haskell: valores, expressões e tipos. O mecanismo de avaliação. Inferência de tipos. Definições multi-clausais de funções. Polimorfismo.
- Listas. Funções recursivas sobre listas. Modelação de problemas usando listas.
- Algoritmos de ordenação de listas: insertion sort, quick sort e merge sort.
- Ordem superior. Padrões de computação. Programação com funções de ordem superior.
- Tipos algébricos. Definição de novos tipos e sua utilização na modelação de problemas.
- Árvores. Árvores binárias, árvores de procura, árvores irregulares e algoritmos associados.
- O mecanismo de classes no tratamento do polimorfismo e da sobrecarga de funções.
- O tratamento puramente funcional do input/output. O monade IO.
Bibliografia essencial
- Bird, R. (1998). Introduction to Functional Programming using Haskell. Prentice-Hall.
- Valença, J. M., Barros, J. B. (1999). Fundamentos da Computação. Livro II: Programação Funcional, Universidade Aberta.
- Thompson, S. (2011). Haskell: the Craft of Functional Programming (3rd ed.). Addison-Wesley.
- Hutton, G. (2016). Programming in Haskell(2nd ed.). Cambridge University Press.
Métodos de ensino
A escolaridade da UC é utilizada da seguinte forma:
- Duas horas teóricas por semana, onde os conceitos teóricos são apresentados.
- Duas horas teórico práticas por semana, onde são propostos exercícios e problemas de programação. Disponibilização um conjunto de desafios de programação, usando como suporte um sistema de “online coding”.
Métodos de avaliação
A avaliação é feita por um teste final escrito e/ou exame de recurso.
O acesso ao teste final é feito através da resposta a uma questão escolhida aleatoriamente de um conjunto de 50 questões que os alunos conhecem antecipadamente.
Essas questões são uma parte do repositório de desafios de programação que estão disponibilizados no sistema de “online coding” referido acima.