Departamento de Informática (UM)

Página de Unidade Curricular 🇬🇧

DesignaçãoCódigoCursoRegimeRegente

Programação Declarativa para Ciência de Dados

15953 [L301N6]

Licenciatura em Ciência de Dados [CDADOS]

S1

Jorge Gustavo Pereira Bastos Rocha

Objetivos

A lista de tópicos que foram definidos para o programa curricular segue de perto a lista de competências que um estudante deverá ter adquirido ao realizar com sucesso esta unidade curricular, de acordo com o proposto para esta UC.

Programa

1. Introdução ao paradigma funcional de programação usando Haskell.
2. Listas. Funções recursivas sobre listas.
3. Algoritmos de ordenação de listas: insertion sort, quick sort e merge sort.
4. Ordem superior. Padrões de computação. Programação com funções de ordem superior.
5. Tipos algébricos. Definição de novos tipos e sua utilização na modelação de problemas.
6. Árvores. Árvores binárias, árvores de procura, árvores irregulares e algoritmos associados.
7. O mecanismo de classes no tratamento do polimorfismo e da sobrecarga de funções.
8. O tratamento puramente funcional do input/output. O monade IO.
9. Introdução à programação Lógica usando Prolog; Construção de Bases de Conhecimento e sua exploração para inferir novas relações.

Bibliografia

Introduction to Functional Programming using Haskell. Richard Bird. Prentice-Hall, 1998.
José M. Valença e José B. Barros. Fundamentos da Computação, Livro II: Programação Funcional. Universidade Aberta, 1999.
Simon Thompson. Haskell: the Craft of Functional Programming. 3rd edition. Addison-Wesley, 2011.
L. Sterling, and E. Shapiro. The Art of Prolog: Advanced Programming Techniques, 2nd edition. MIT Press, 1994
William F. Clocksin & Christopher S. Mellish, Programming in Prolog, Using the ISO Standard. Springer , 2003

Resultados da aprendizagem

No final desta UC o aluno deverá ser capaz de programar dentro do paradigma funcional/lógico usando Haskell/Prolog, nomeadamente:
- Resolver problemas de programação decompondo-os em problemas mais pequenos;
- Implementar algoritmos recursivos sobre listas e sobre árvores;
- Implementar programas tirando partido da utilização de funções de ordem superior;
- Compreender 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.

Método de avaliação

Por frequência: realização de duas provas escritas. (entre 40%-60%).
Por exame: realização de uma prova escrita. (entre 40%-60%).

Funcionamento

Turno: T 1; Docente: Jorge Gustavo Pereira Bastos Rocha; Dep.: DI; Horas: 30.
Turno: TP 1; Docente: Jorge Gustavo Pereira Bastos Rocha; Dep.: DI; Horas: 30.

[ Outras UCs do Departamento ]