haskell_logo.png 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!

foto02.jpg

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)

Slides da apresentação (PDF)

foto01.jpg

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

Autor: Emilio Francesquini e Fabrício Olivetti

Created: 2018-10-26 Fri 11:33