Saltar para:
Logótipo
Você está em: Início > CC1005
Mapa das Instalações
FC6 - Departamento de Ciência de Computadores FC5 - Edifício Central FC4 - Departamento de Biologia FC3 - Departamento de Física e Astronomia e Departamento GAOT FC2 - Departamento de Química e Bioquímica FC1 - Departamento de Matemática

Programação Funcional

Código: CC1005     Sigla: CC1005     Nível: 100

Áreas Científicas
Classificação Área Científica
OFICIAL Ciência de Computadores

Ocorrência: 2020/2021 - 2S Ícone do Moodle Ícone  do Teams

Ativa? Sim
Página Web: http://www.dcc.fc.up.pt/~pbv/aulas/funcional
Unidade Responsável: Departamento de Ciência de Computadores
Curso/CE Responsável: Licenciatura em Ciência de Computadores

Ciclos de Estudo/Cursos

Sigla Nº de Estudantes Plano de Estudos Anos Curriculares Créditos UCN Créditos ECTS Horas de Contacto Horas Totais
L:B 2 Plano de Estudos Oficial 3 - 6 56 162
L:CC 101 Plano de estudos a partir de 2014 1 - 6 56 162
L:F 1 Plano de Estudos Oficial 2 - 6 56 162
3
L:G 0 Plano estudos a partir do ano letivo 2017/18 2 - 6 56 162
3
L:M 6 Plano de Estudos Oficial 2 - 6 56 162
3
L:Q 0 Plano estudos a partir do ano letivo 2016/17 3 - 6 56 162
MI:ERS 141 Plano Oficial desde ano letivo 2014 1 - 6 56 162
Mais informaçõesA ficha foi alterada no dia 2021-02-09.

Campos alterados: Métodos de ensino e atividades de aprendizagem, Fórmula de cálculo da classificação final, Obtenção de frequência, Programa, URL da página, Componentes de Avaliação e Ocupação, Bibliografia Complementar, Métodos de ensino e atividades de aprendizagem, Fórmula de cálculo da classificação final, Obtenção de frequência, Programa, Componentes de Avaliação e Ocupação

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
Recomendar Página Voltar ao Topo
Copyright 1996-2025 © Faculdade de Ciências da Universidade do Porto  I Termos e Condições  I Acessibilidade  I Índice A-Z  I Livro de Visitas
Página gerada em: 2025-06-15 às 10:43:28 | Política de Utilização Aceitável | Política de Proteção de Dados Pessoais | Denúncias