Programação Funcional em Haskell
Torne-se um programador supremo!
Índice
1 Apresentação do Curso
Você já sonhou em, após compilar um programa com sucesso, ele não apresentar bugs? Os seus sonhos se tornam realidade com o paradigma funcional! Esse curso irá ensinar como criar códigos expressivos e livre de bugs utilizando a linguagem Haskell.
Grandes empresas como Microsoft, Facebook, Target e diversas empresas do ramo financeiro têm utilizado linguagens de programação funcionais em parte de seus projetos. Além disso, linguagens multi-paradigmas como Java e Python vêm incorporando tais conceitos a cada nova versão para aumentar a expressividade e produtividade.
Pré-requisito: gostar de programar!
Atenção: Ao completar este curso você provavelmente ficará mal acostumado e vai se lamentar ao programar em qualquer outra linguagem. Estejam avisados!
Palestra Convidada
Como o Nubank utiliza linguagens (e conceitos) funcionais
para revolucionar serviços financeiros
Rodrigo Flores, Nubank
06/10/2018 - 10:30
UFABC - Campus São Bernardo do Campo
Bloco Beta, Auditório 005
(Como chegar)
Resumo: Somos responsáveis pelas finanças de milhões de clientes, e para isso precisamos gerenciar sistemas que controlam todas as ações tomadas nesse processo. Diferente do que é comum na indústria financeira, nossas escolhas de tecnologia determinam a forma como fazemos isso, e a decisão de utilizar Clojure para a construção dos nossos serviços traz diversos benefícios e desafios, que serão apresentados durante essa palestra.
Sobre o palestrante: Rodrigo é Engenheiro de Software na Nubank há 4 anos e gosta bastante de trabalhar com linguagens funcionais, computação distribuída, arquitetura de sistemas e liderança de times de engenharia. É formado em ciência da computação pelo IME-USP e já trabalhou bastante tempo com Ruby.
2 Datas
O curso será ministrado pelos professores Fabrício Olivetti e Emílio Francesquini terá duração de 12 horas nos dias 22/09, 29/09, 06/10 das 08h00 às 12h00 no campus da UFABC de São Bernardo do Campo.
- No último dia (06/10 às 10h30) teremos uma palestra da Nubank, apresentada pelo Rodrigo Flores sobre o uso de linguagem funcional em ambientes corporativos.
3 Inscrições
- Inscrições encerradas. Confira abaixo a lista dos inscritos:
Nome | Notebook próprio? | Lab | |
---|---|---|---|
Adriana Maria Cavalcanti | Não | A1-L101 | |
Alberto De Andrade Pinheiro | Sim | A1-L101 | |
Alex Arantes Goncalves | Sim | A1-L101 | |
Alexia Carolina Scheffer Da Silva | Sim | A1-L101 | |
Ana Da Silva De Paula | Sim | A1-L101 | |
Anabel Cristina Moreira De Freitas | Não | A1-L101 | |
Anderson Sousa Da Silva | Sim | A1-L101 | |
Andre Barreto Moura Solla | Não | A1-L101 | |
Andre Rodrigues Barbosa | Sim | A1-L101 | |
André Juan Ferreira Martins De Moraes | Sim | A1-L101 | |
Bruno Aristimunha Pinto | Sim | A1-L101 | |
Bruno Henrique Feliciano Dos Reis | Sim | A1-L101 | |
Bruno José Machado De Camargo | Não | A1-L101 | |
Bryan Batista Valeriano | Sim | A1-L101 | |
Bryan Bialokur Da Cruz | Sim | A1-L101 | |
Caio Martins | Sim | A1-L101 | |
Camylla Gonçalves Cantanheide | Não | A1-L101 | |
Carlos Augusto Nogueira Da Silva | Sim | A1-L101 | |
Carlos Henrique Silva Do Carmo | Não | A1-L101 | |
Christian Noberto De Souza | Não | A1-L101 | |
Daniel Escudero Brito Silva | Não | A1-L101 | |
Daniel Gonçalves Da Silva | Sim | A1-L101 | |
Danilo De Souza Cutrim | Sim | A1-L101 | |
Deise Maciel Novais | Não | A1-L101 | |
Diego Mello Costa Senese | Não | A1-L101 | |
Dimitri Leandro De Oliveira Silva | Não | A1-L101 | |
Eder Gabriel Da Trindade Félix | Sim | A1-L101 | |
Eduardo Renesto Estanquiere | Sim | A1-L101 | |
Emerson Almeida Matos | Sim | A1-L101 | |
Fabio Luis Arruda Fernandes | Não | A1-L101 | |
Fernando Lico Barscevicius | Não | A1-L101 | |
Filipi De Carvalho Brabo | Sim | A1-L101 | |
Flavio Vicentini | Sim | A1-L101 | |
Gabriel César Nápoles Campos Dos Santos | Sim | A1-L101 | |
Giuliana Aida Orsatti | Sim | A1-L101 | |
Guilherme Cesario Scagnolato | Não | A1-L101 | |
Guilherme Coelho De Almeida | Não | A1-L101 | |
Guilherme De Oliveira Jacintho | Sim | A1-L101 | |
Guilherme Fortes Evangelista | Não | A1-L101 | |
Guilherme Naziozeno Barreto | Não | A1-L101 | |
Guilherme Seidyo Imai Aldeia | Sim | A1-L101 | |
Hígor Carmanini Barbosa | Não | A1-L101 | |
Icaro Fernandez Guselian | Sim | A1-L101 | |
Igor Iwashita De Oliveira | Não | A1-L101 | |
Isolda Figueiredo Silva Costa | Não | A1-L101 | |
Jairo Da Silva Freitas Júnior | Sim | A1-L101 | |
Johnathas Dos Santos Melati | Sim | A1-L101 | |
Jonatas Duarte Souza | Não | A1-L101 | |
Kaleb Alves | Não | A1-L101 | |
Karoliny Dos Anjos Pereira Alves | Sim | A1-L101 | |
Laís Marinho De Souza | Sim | A1-L101 | |
Leandro Ribeiro De Almeida | Não | A1-L101 | |
Luan Cerilio De Oliveira Lima | Sim | A1-L102 | |
Luana Ferreira Do Nascimento | Não | A1-L102 | |
Lucas Alves Rangel | Sim | A1-L102 | |
Lucas David Vadilho | Não | A1-L102 | |
Lucas Kenji Gashu | Sim | A1-L102 | |
Lucas Klein Santos | Não | A1-L102 | |
Lucas Serna Quinto Pardo | Não | A1-L102 | |
Lucca Diego Prado | Sim | A1-L102 | |
Luis Ricardo Manrique | Sim | A1-L102 | |
Lívia Dias Branco | Não | A1-L102 | |
Mara Tamiris Miranda De Oliveira | Sim | A1-L102 | |
Marcela Akemi Yamashita | Não | A1-L102 | |
Marcelo Pereira Barbosa | Sim | A1-L102 | |
Marcos Seiti Suzuki | Não | A1-L102 | |
Maria Clara Vilas Boas De Souza | Sim | A1-L102 | |
Matheus Araújo De Sá | Sim | A1-L102 | |
Matheus Costa Damasceno | Não | A1-L102 | |
Matheus Da Costa Baio | Sim | A1-L102 | |
Matheus Fama Machado De Sousa | Não | A1-L102 | |
Matheus Gomes Juy | Sim | A1-L102 | |
Melissa Kelly Lima Da Silva | Sim | A1-L102 | |
Mitiko Celene De Araújo Hashizume | Sim | A1-L102 | |
Natália Pereira De Oliveira | Sim | A1-L102 | |
Nicole Cantelli Afonso | Não | A1-L102 | |
Nilton Gomes Martins Junior | Não | A1-L102 | |
Paloma De Sousa Bezerra | Não | A1-L102 | |
Patricia Dias Dos Santos | Sim | A1-L102 | |
Pedro Caique Porto Silva | Sim | A1-L102 | |
Pedro Henrique Birais | Não | A1-L102 | |
Rafael Akio Shishito Matos | Não | A1-L102 | |
Rafael Telles | Sim | A1-L102 | |
Rafaela De Oliveira Cardoso | Não | A1-L102 | |
Raul Teodoro Machado | Não | A1-L102 | |
Renata Aparecida De Oliveira Santos | Não | A1-L102 | |
Renata Dos Santos Silva Paes | Sim | A1-L102 | |
Renato Vinícius Turtienski Possa | Sim | A1-L102 | |
Ricardo Faria Da Silva | Não | A1-L102 | |
Ricardo Gonçalves Salmazo | Sim | A1-L102 | |
Ricardo Praxedes Alves Dos Santos | Sim | A1-L102 | |
Rodrigo Alves Mendonca | Sim | A1-L102 | |
Rodrigo Dos Santos Pereira | Não | A1-L102 | |
Rodrigo Fassa | Sim | A1-L102 | |
Saullo Haniell Galvão De Oliveira | Sim | A1-L102 | |
Tamires Christyne Da Silva | Não | A1-L102 | |
Theodoro Gava Dainezi | Sim | A1-L102 | |
Thiago Felipe Floreste | Sim | A1-L102 | |
Thiago Henrique Gomes Panini | Sim | A1-L102 | |
Vagner Bezerra Figueiredo | Sim | A1-L102 | |
Victor Gabriel Osti Antoniassi | Sim | A1-L102 | |
Vinicios Vilhegas Da Rocha Sandra Regina Vilhegas Da Rocha | Sim | A1-L102 | |
Vinicius Agustin Tapia Resende | Sim | A1-L102 | |
Vinícius Narciso Da Silva | Não | A1-L102 | |
Waldir Bertazzi Junior | Sim | A1-L102 | |
William Sena Silva | ? | A1-L102 |
3.1 Informações para inscrição
- Número de vagas: 84 para uso do computador do laboratorio, 36 para uso de notebook próprio.
- Cadastros via:
https://sig.ufabc.edu.br/sigaa/link/public/extensao/visualizacaoAcaoExtensao/487
- Para se cadastrar o usuário deve clicar em "Clique aqui para fazer a sua Inscrição" –> “Ainda não possuo cadastro”.
- Insira os dados solicitados e aguarde e-mail para finalização do cadastro. Após a finalização do cadastro, insira o e-mail e senha, clique em “Cursos e Eventos Abertos" e faça o cadastro no curso.
4 Como Chegar
Alameda da Universidade, s/nº - Bairro Anchieta - São Bernardo do
Campo
CEP: 09606-045
Mais informações: http://www.ufabc.edu.br/a-ufabc/campi/sao-bernardo-do-campo
5 Material do Curso
Instalando o ambiente Haskell
Aula 01
Roteiro
- Conteúdo
- A Linguagem
- Ambiente de Programação
- Primeiro Projeto
- Convenções de Código
- Tipos de Dados
- Polimorfismo
- Listas
- Funções sobre Listas
- Pattern Matching sobre Listas
Lista de exercícios 01
O arquivo abaixo contém um projeto Stack incompleto. Apesar de
compilar, as definições das funções precisam ser
completadas. Complete cada uma das funções presentes no arquivo
src/Main.hs
utilizando o VSCode com os plugins apropriados (ou o
editor da sua preferência). Para compilar utilize stack build
e
para executar faça stack exec exercicios
.
Tarefa - Arkanoid Parte 1
Enunciado (PDF)
Aula 02
Roteiro
- Compreensão de listas
- Recursão
- Recursão em listas
- Funções de alta ordem
- Definindo novos tipos
- Tipos de dados algébricos
- Tipos recursivos
- Classes de tipo
Tarefa - Arkanoid
Enunciado (PDF)
Aula 03
Roteiro
- Tipos paramétricos
- Functors
- Applicatives
- Monads
- Entrada e Saída
6 Contato
- Emilio Francesquini - e.francesquini@ufabc.edu.br
- Fabrício Olivetti - folivetti@ufabc.edu.br