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