Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação Funcional (COMP0393) Giovanny F. L. Palma Leila M. A. Silva Copyright 2021 @ by Leila Silva 1 Dados do Curso Créditos: 4 (60 horas) e-mail: Prof. Giovanny: giovanny@academico.ufs.br Profa. Leila: leila@academico.ufs.br Monitores: Camille Sousa Meneses de Santana: millesms@academico.ufs.br Cristian Di Giovanni: cristiandg@academico.ufs.br Luiz Gustavo (enggustavo.caldas@academico.ufs.br) Plano de ensino: SIGAA Material sobre o curso (guia de estudo semanal, aulas e materiais diversos): https://sites.google.com/academico.ufs.br/pf-dcomp-ufs-2021-1/p%C3%A1gina-inicial Ferramentas necessárias: Editor de texto da sua preferência (ex: Notepad) Haskell: GHCi , Repl.it ou Jupyter (só para Linux) CodeWorld (para a parte de figuras e animações) Chats e Fóruns (Telegram): https://t.me/joinchat/N69SRs7P_jZhNmFh Avaliações (Google Classroom) Leila Silva 2 mailto:giovanny@academico.ufs.br mailto:giovanny@academico.ufs.br mailto:giovanny@academico.ufs.br mailto:giovanny@academico.ufs.br mailto:giovanny@academico.ufs.br mailto:leila@academico.ufs.br mailto:leila@academico.ufs.br mailto:leila@academico.ufs.br mailto:leila@academico.ufs.br mailto:leila@academico.ufs.br mailto:millesms@academico.ufs.br mailto:enggustavo.caldas@academico.ufs.br https://t.me/joinchat/N69SRs7P_jZhNmFh https://t.me/joinchat/N69SRs7P_jZhNmFh https://t.me/joinchat/N69SRs7P_jZhNmFh https://t.me/joinchat/N69SRs7P_jZhNmFh https://t.me/joinchat/N69SRs7P_jZhNmFh https://t.me/joinchat/N69SRs7P_jZhNmFh https://t.me/joinchat/N69SRs7P_jZhNmFh https://t.me/joinchat/N69SRs7P_jZhNmFh https://t.me/joinchat/N69SRs7P_jZhNmFh GHCi ● Compilador Haskell interativo ● Baixe e instale em sua máquina – https://www.haskell.org/downloads/ – Use a opção Haskell Platform e escolha o seu sistema operacional – Link para um vídeo sobre como instalar: https://www.youtube.com/watch?v=jxkTARMwBI OBS: Aula de reforço neste sábado para dúvidas de instalação e exploração do ambiente 3 https://www.haskell.org/downloads/ https://www.haskell.org/downloads/ https://www.youtube.com/watch?v=jxkTARMwBI https://www.youtube.com/watch?v=jxkTARMwBI Repl.It ● Ambiente online colaborativo para várias linguagens. Pode ser acessado do celular. ● Já inclui o GHCi e editor ● Interessante para compartilhar código com colegas em estudos em grupo – https://repl.it/languages/haskell 4 https://repl.it/languages/haskell https://repl.it/languages/haskell Jupyter ● Ambiente online para várias linguagens, mas só para Linux – https://jupyter.org ● IHaskell – Haskell para Jupyter – https://github.com/gibiansky/IHaskell 5 https://jupyter.org/ https://github.com/gibiansky/IHaskell CodeWorld ● Ambiente online para trabalhar com gráficos e animações – https://code.world/haskell 6 https://code.world/haskell https://code.world/haskell Dados do Curso Ementa Indução Matemática. Resolução de problemas por indução. Paradigma funcional. Expressões. Valores. Funções e tipos. Tipos primitivos de dados e tipos derivados. Recursividade. Definições por casamento de padrão. Solução de problemas de baixa complexidade. Polimorfismo e funções de alta ordem. Avaliação de expressões lazy e eager. Programação com listas. Tipos algébricos. Raciocínio com programas. Leila Silva 7 Dados do Curso Objetivos Estudar o paradigma da Programação Funcional; Aplicar a programação funcional na resolução de problemas; Raciocinar sobre programas funcionais, inclusive realizando prova de corretude de programas. Leila Silva 8 Dados do Curso Habilidades Conhecer e compreender os principais elementos da Programação Funcional; Compreender e propor soluções computacionais algorítmicas; Raciocinar sobre programas funcionais. Não se espera que: Apenas leia passivamente soluções; Memorize soluções e não seja capaz de propor novas soluções; Tenha uma atitude passiva na resolução de exercícios, observando como os colegas mais engajados resolvem os problemas. Leila Silva 9 Dados do Curso Metodologia: Aulas assíncronas com a explanação do conteúdo, sugestão de leituras, vídeos e exercícios; Prática assíncrona dos exercícios sugeridos usando o GHCi; Aulas síncronas para elucidação de dúvidas e resolução de questões, com a participação de alunos. Atendimento síncrono e assíncrono pelos professores e monitores para esclarecimento de dúvidas. Leila Silva 10 Dados do Curso Avaliações: Provas subjetivas individuais: 3 (P1 , P2 e P3) Listas obrigatórias individuais: 4 (L1 , L2 , L3 e L4) Projeto obrigatório individual: 2(PJ1 e PJ2) Médias das Unidades: NU1 = 0,6 * P1 +0,25* L1 + 0,15* PJ1 NU2 = 0,75 * P2 +0,25* PJ2 NU3 = 0,6 * P3 +0,2* L2 + 0,1* L3 + 0,1* L4 Média final: média aritmética das três unidades. Datas das Provas: definidas no plano de ensino Observação: Nos casos previstos nas normas acadêmicas, haverá uma prova de reposição no final do semestre com o assunto todo, para aqueles alunos que faltaram alguma avaliação com justificativa legal. Não haverá prova para reposição de notas fora destes casos. É recomendada a leitura detalhada das normas acadêmicas da UFS para se inteirar dos casos previstos em lei. Leila Silva 11 Dados do Curso O que fazer para alcançar sucesso na disciplina? Perceber que você está construindo seu futuro profissional então deve perseguir qualidade em tudo que fizer. Para atingir qualidade é preciso: Estudar pelo menos 8 horas por semana em casa para a disciplina; Ler várias fontes bibliográficas sobre o assunto; Fazer todos os exercícios propostos; Discutir suas soluções com os colegas e monitores; Procurar monitores e professores para esclarecer dúvidas; Participar com entusiasmo das aulas síncronas. Lembre-se seu futuro profissional depende de sua atitude pró-ativa HOJE. Leila Silva 12 Dados do Curso Livros principais: Simon Thompson, Haskell: The Craft of Functional Programming, Addison-Wesley, 2011. Miran Lipovaca, Learn You a Haskell for Great Good, 2011. (http://learnyouahaskell.com)- grátis online Cláudio Sá e Márcio Silva. Haskell, uma Abordagem Prática, Novatec, 2006. Will Kurt, Get Programming with Haskell, Manning, 2020 (disponível grátis online) Site principal: http://www. haskell.org Leila Silva 13 http://learnyouahaskell.com)-/ http://learnyouahaskell.com)-/ http://learnyouahaskell.com)-/ http://learnyouahaskell.com)-/ http://learnyouahaskell.com)-/ http://learnyouahaskell.com)-/ Dados do Curso Plano de Aula: detalhado no SIGAA Três unidades principais Unidade 1: Apresentação da disciplina. Motivação. Revisão de Conceitos Matemáticos: Álgebra de Boole, Coleções, Relações e Funções. Introdução à programação funcional. A linguagem Haskell. Tipos básicos , operadores, funções , definições locais e casamento de padrão. Introdução ao GHCi. Pensamento Computacional. Projeto de programas. Figuras e Animações no ambiente CodeWorld Tuplas e listas. Compreensões. Testes de funções com QuickCheck Funções sobre listas. Leila Silva 14 Dados do Curso Plano de Aula: detalhado no SIGAA Unidade 2: Indução Matemática. Recursão primitiva. Indução forte e Recursão geral. Técnicas para a construção de funções recursivas Construção de figuras recursivas. Programação com listas. Leila Silva 15 Dados do Curso Plano de Aula: detalhado no SIGAA Unidade 3: Raciocínio com programas. Provas de propriedades em Haskell. Polimorfismo e Sobrecarga Classes de tipos e checagem de tipos. Generalização: Funções como argumentos. Funções como resultado. Tipos algébricos. Módulos Programação preguiçosa. Entrada e saída Introdução a Monads Leila Silva 16
Compartilhar