Programação Funcional
Áreas Científicas |
Classificação |
Área Científica |
OFICIAL |
Ciência de Computadores |
Ocorrência: 2020/2021 - 2S

Ciclos de Estudo/Cursos
Língua de trabalho
Português
Objetivos
Introdução ao paradigma de programação funcional usando a linguagem Haskell.
Resultados de aprendizagem e competências
No final desta UC, o estudante deverá ser capaz de:
1. Definir funções usando equações com padrões;
2. Codificar algoritmos recursivos elementares sobre listas e árvores em Haskell
3. Usar tipos algébricos para representar dados problemas elementares de programação
4. Decompor problemas de programação como composição de funções mais simples usando ordem superior e lazy-evaluation
5. Provar propriedades elementares de programas recursivos usando teoria equacional e indução.
Modo de trabalho
B-learning
Programa
Expressões, valores e tipos básicos. Definições de funções simples; tipos funcionais. Execução passo-a-passo usando substituição. Tipos compostos: listas e tuplos. Algumas funções sobre listas do prelúdio-padrão. Notação de listas em compreensão. Definições recursivas. Polimorfismo paramétrico
Classes de tipos do prelúdio para sobrecarga de operadores.
Funções de ordem superior. Processamento de ficheiro usando o mónada IO. Exemplos de resolução de problemas elementares de programação competitiva em Haskell.
Definição de novos tipos de dados. Estudo de um caso: implementação de tabelas associativas usando árvores binárias de pesquisa. Representação de conjuntos, relações binárias e grafos; algoritmos elementares sobre árvores e grafos.
Provas de propriedades de programas recursivos usando teoria equacional e indução.
Bibliografia Obrigatória
Hutton Graham 1968-;
Programming in Haskell. ISBN: 9780521692694 pbk
Bibliografia Complementar
Richard Bird;
Introduction to functional programming using Haskell. ISBN: 978-0-13-484346-9 pbk
Richard Bird; Thinking functionally with Haskell, Cambridge University Press, 2015. ISBN: 978-1107452640
Métodos de ensino e atividades de aprendizagem
Aulas teóricas usando video-conferência, projeção de slides e demonstração de programas. Aulas laboratoriais em computador e com suporte por video-conferência.
Tipo de avaliação
Avaliação distribuída com exame final
Componentes de Avaliação
Designação |
Peso (%) |
Exame |
80,00 |
Trabalho laboratorial |
20,00 |
Total: |
100,00 |
Componentes de Ocupação
Designação |
Tempo (Horas) |
Estudo autónomo |
110,00 |
Frequência das aulas |
52,00 |
Total: |
162,00 |
Obtenção de frequência
Não há requisitos para frequência da UC.
Fórmula de cálculo da classificação final
A classificação final é determinada pelas componentes de exame final e por uma pela resolução nas aulas teóricas e práticas de exercícios de escolha múltipla e de programação com correção automática. Os exercícios para avaliação devem ser resolvidos individualmente. Será usado o sistema automático MOSS para detetar e desqualificar plágios.
Classfiicação final = 80% * Exame + 20% Exercícios
Avaliação especial (TE, DA, ...)
A avaliação segue os mesmos critérios indicados acima para os estudantes de inscrição ordinária.
Melhoria de classificação
A classificação de melhoria é feita apenas pelo exame final.
Observações
Júri da Unidade Curricular: Pedro Vasconcelos e Manuel Barbosa