Designação | Código | Curso | Regime | Regente |
---|
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. |