BCC222 - Programação Funcional - 2022-1

Carga horária da disciplina: 4 horas/aula


Professor(es) em 2022-1

Turma 11 Professor:
Rodrigo Geraldo Ribeiro - www | e-mail

Horários:
Segunda-feira (08h20 - 10h00)
Quarta-feira (08h20 - 10h00)

Objetivos

Ao final do curso espera-se que os alunos possuam os seguintes conhecimentos e habilidades:
- Conhecimento das características fundamentais de linguagens funcionais modernas e noções básicas sobre o modelo de execução de programas nessas linguagens;
- Noções básicas sobre sistemas de tipos e inferência de tipos;
- Capacidade de distinção entre polimorfismo paramétrico, de sobrecarga e de inclusão;
- Entendimento dos diferentes mecanismos de avaliação em linguagens de programação;
- Capacidade para comparar características de linguagens de diferentes paradigmas;
- Habilidade para programar em uma linguagem funcional moderna;
- Entendimento sobre a implementação da noção de estado em linguagens funcionais;
- Noções de derivação de programas a partir da especificação e sobre prova de correção de programas em linguagens funcionais.

Ementa

Características dos principais paradigmas de programação; princípios do paradigma de programação funcional; principais características de linguagens de programação funcional: recursão, abstração funcional, funções de ordem superior, tipos de dados algébricos, polimorfismo, inferência de tipos, avaliação estrita e avaliação lazy, sobrecarga; estudo de uma linguagem funcional moderna e desenvolvimento de programas nesta linguagem, enfocando aspectos de correção, modularidade e reuso de código.

Conteúdo Programático

- Introdução
- Paradigmas de programação
- Primeiros passos em haskell
- Definindo funções
- Tipos de dados
- Expressão condicional
- Funções recursivas
- Tuplas, listas e polimorfismo paramétrico
- Casamento de padrão
- Programas interativos
- Ações de e/s recursivas
- Números aleatórios e argumentos da linha de comando
- Arquivos
- Expressão lambda
- Funções de ordem superior
- Tipos algébricos
- Classes de tipos
- Mônadas
- Avaliação lazy
- Prova de propriedades de programas

Bibliografia

- THOMPSON, Simon. Haskell: The Craft of Functional Programming. 3.. ed. Harlow: Addison-Wesley, 1986.
- HUTTON, Graham. Programming in Haskell. Cambridge: Cambridge University Press, 2007.
- SÁ, Claudio Cesar de; SILVA, Marcio Ferreira da. Haskell: Uma Abordagem Prática. São Paulo: Novatec Editora Ltda, 2006.

Bibliografia complementar

- BIRD, Richard. Introduction to Functional Programming using Haskell. 2. ed. London: Prentice Hall Press, 1998.
- MILNER, R.; TOFTE, Mads; HARPER, Robert. The definition of standard ML. Cambridge: MIT, 1997.
- ULLMAN, Jeffrey D. Elements of ML programming. New Jersey: Prentice-Hall. 1998.
- PAULSON, Laurence C. ML for the working programming. 2. ed. Cambridge: Cambridge University, 1996.
- PEYTON JONES, Simon L. The implementation of functional programming languages. New York: Prentice-Hall. 1987.

Departamento de Computação  |  ICEB  |  Universidade Federal de Ouro Preto
Campus Universitário Morro do Cruzeiro  |  CEP 35400-000  |  Ouro Preto - MG, Brasil
Telefone: +55 31 3559-1692  |  decom@ufop.edu.br