BCC 222
Programação Funcional

José Romildo Malaquias
Sala 21 – DECOM – ICEB III
Instituto de Ciências Exatas e Biológicas
Universidade Federal de Ouro Preto
romildo@iceb.ufop.br

2017-2

1 Dados gerais

Departamento Computação
Unidade Instituto de Ciências Exatas e Biológicas
Carga horária semanal 2 teóricas + 2 práticas = 4 total
Duração em semanas 18
Carga horária semestral 72 horas-aula
Pré-requisitos BCC201 – Introdução à Programação
Cursos Ciência da Computação: obrigatória 3o período

2 Objetivos

Ao final do curso espera-se que os alunos possuam os seguintes conhecimentos e habilidades:

3 Ementa

  1. Características dos principais paradigmas de programação.

  2. Princípios do paradigma de programação funcional.

  3. Principais características das linguagens de programação funcional:

  4. Estudo de uma linguagem funcional moderna e desenvolvimento de programas nesta linguagem, enfocando aspectos de correção, modularidade e reuso de código.

4 Metodologia de Ensino

Aulas teóricas

Aulas expositivas sobre o conteúdo. Os conceitos serão apresentados através da solução de problemas que requerem aplicação de tais conceitos. Será dada uma forte ênfase na implementação como instrumento para garantir a assimilação dos conceitos da programação funcional.

Aulas práticas

Aulas práticas onde o aluno terá a oportunidade de escrever programas e trechos de programas usando os conceitos e construções sendo estudados. Para tanto deverá seguir roteiros com as tarefas a serem realizadas.

5 Atividades Discentes

Listas de exercícios

Exercícios de implementação de programas e trechos de programas para assimilação dos conceitos apresentados.

Trabalhos

Exercícios de implementação mais elaborados para consolidar os conceitos estudados.

6 Avaliações

A avaliação será feita por um conjunto de provas escritas, um conjunto de trabalhos práticos, e um conjunto de mini testes. A princípio os mini testes acontecerão semanalmente ao fnal da aula teórica.

A tabela a seguir enumera as atividades de avaliação previstas, com os respectivos pesos na formação da nota final, e datas de realização.

avaliação peso data assuntos
Prova 1 2,5 06/11/2017 Seg
Prova 2 2,5 20/12/2017 Qua
Prova 3 2,5 07/02/2018 Qua
Testes 1,5 Semanalmente
Trabalhos 1,0
Exame especial 21/02/2018 Qua De acordo com a resolução CEPE 2.880

As atividades deverão ser submetidas através do site da disciplina no sistema Moodle do DECOM: http://www.moodlepresencial.ufop.br/course/view.php?id=13761

7 Bibliografia

Haskell Programming from First Principles
Christopher Allen, Julie Moronuki

Learn You a Haskell for Great Good!: A Beginner’s Guide
Miran Lipovača
2011
ISBN: 9781593272838
No Starch Press

Haskell: The Craft of Functional Programming
Simon Thompson
Addison-Wesley
2011
Terceira edição
ISBN: 0201882957
608 páginas
Bibliografia básica

Programming in Haskell
Graham Hutton
Cambridge University Press
2016
Segunda edição
ISBN: 978-1316626221
318 páginas
Bibliografia básica
Livro-texto

8 Código de honra do aluno

Este assunto deve ser muito simples. Não entregue trabalhos de outra pessoa como sendo seus, e não compartilhe suas soluções com outros alunos.

Você deve se sentir livre para discutir os problemas propostos e os projetos de programação com os colegas, mas todo trabalho que você submeter ao professor deve ser de sua própria autoria. Ou seja, você deve elaborar suas próprias soluções para os problemas e implementar seus projetos de programação você mesmo.

Se você discutir suas idéias com outros estudantes, não tem problema, mas faça uma observação sobre o mesmo na submissão do seu trabalho.

As atividades propostas são para trabalho individual.

9 Grupo de discussão

Existe um grupo de discussão sobre o conteúdo da disciplina no Google Groups que deverá ser utilizado ativamente pelos alunos, professor e monitores durante o curso.

O professor e os monitores poderão propor questões para discussão no grupo, bem como problemas para serem resolvidos.

Caberá aos alunos discutir as questões e problemas propostos, apontando soluções básicas e/ou soluções alternativas ou comentando o assunto. Os alunos poderão também propor algum problema ou levantar alguma questão para discussão que julgarem interessante.

O endereço do grupo de discussão é http://groups.google.com/group/bcc222.

Cada aluno deverá se inscrever imediatamente no grupo e começar a participar das discussões.

10 Ferramentas

Nas aulas será utilizada a linguagem Haskell para desenvolver os conceitos de programação funcional.

Para desenvolvimento de programas em Haskell serão usados:

11 Aulas

Os roteiros das aulas estão disponíveis em progfunc.pdf. Atualizado em 06/02/2018.

# Dia Assusntos Referências (apostila)
1 25/09/2017 Seg Apresentação do curso
Paradigmas de Programação 1
2 27/09/2017 Qua Primeiros Passos 2, 3
3 02/10/2017 Seg Tipos 4
4 04/10/2017 Qua Expressão Condicional 5
5 09/10/2017 Seg Funções Recursivas 7
6 11/10/2017 Qua Tuplas, Listas e Polimorfismo Paramétrico 9
7 16/10/2017 Seg Casamento de Padrão 10
8 18/10/2017 Qua (Continuação)
9 23/10/2017 Seg Expressão de Seleção Múltipla 12
10 25/10/2017 Qua Sobrecarga 11
11 30/10/2017 Seg Expressão Lambda 14
Funções de Ordem Superior 15
12 01/11/2017 Qua Programas Interativos 6, 8
13 06/11/2017 Seg (Prova 1)
14 08/11/2017 Qua Programas Interativos (Continuação)
15 13/11/2017 Seg Programas Interativos (Continuação)
15/11/2017 Qua (Feriado)
16 20/11/2017 Seg Programas Interativos (Continuação)
17 22/11/2017 Qua Programas Interativos (Continuação)
18 27/11/2017 Seg Valores aleatórios 13
Exemplo: adivinha o número (incompleto)
19 29/11/2017 Qua Argumentos da Linha de Comando 16
20 04/12/2017 Seg (Continuação)
06/12/2017 Qua (Não houve aula)
21 11/12/2017 Qua Tipos Algébricos 17
22 13/12/2017 Qua (Continuação)
23 18/12/2017 Qua (Continuação)
24 20/12/2017 Qua (Prova 2)
25 15/01/2018 Seg Funtores, Funtores Aplicativos, Mônadas
[Functors, Applicativ
es, And Monads In Pictures](http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html)
26 17/01/2018 Qua Exemplos
Expressões aritméticas
xx 05/02/2018 Seg Resumo
Funtores

12 Testes

# Data entrega Solução
1 29/11/2017 test01-solutions.zip
2 04/12/2017 test02-solutions.zip
3 11/12/2017 test03-solutions.zip
4 13/12/2017 test04-solutions.zip

13 Trabalhos

14 Notas e frequências

Diário de classe

Última atualização: 2018-02-06 14:38:59 por José Romildo Malaquias.