Programação funcional em Haskell no mundo real:
Aplicações em data science e na web
Table of Contents
Apresentação do Curso
Grandes empresas de tecnologia como Microsoft, Facebook, Target e também 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.
O uso desse paradigma está ainda mais evidente nas áreas de Data Science, devido a necessidade de algoritmos que possam ser processados de forma distribuída e também na área de programação para Web, com a popularização de frameworks baseados em programação funcional reativa, como por exemplo o ReactJS.
Esse fato é evidenciado pelas diversas ofertas de emprego que solicitam, especificamente, por capacidades em linguagens funcionais como Elixir, Erlang e Scala. Contudo, na maior parte dos currículos de graduação em computação e em áreas correlatas é dado um maior enfoque nos paradigmas estruturados e orientados a objetos. Isso cria um obstáculo para esses profissionais quando precisam lidar com essas novas tecnologias ou para o preenchimento dos requisitos durante a busca por uma nova colocação no mercado.
Objetivos
Este curso tem como objetivo apresentar o paradigma funcional e seus benefícios através da linguagem Haskell como uma ferramenta viável de criação, entendimento e corretude de algoritmos com aplicações voltadas à data science e programação para web.
Esperamos que ao final do curso os alunos tenham condições de perceber as vantagens do uso de linguagens funcionais além de permitir novas abstrações para soluções de problemas. O aluno também estará apto a aplicar linguagens funcionais e seus conceitos para a solução de problemas básicos em data science e programação em geral, requisitos para uma grande fatia das ofertas de emprego atuais.
No último dia do curso (19/10 às 10h30) teremos uma palestra com Guilherme de Maio da Telnyx (https://telnyx.com/) que nos falará sobre o uso de linguagens funcionais, em particular Elixir, em um ambiente corporativo real.
O curso é gratuito e será ministrado pelos professores da Universidade Federal do ABC, Fabrício Olivetti e Emílio Francesquini e terá duração de 12 horas.
Programação
- Dia 01: 28/09/2019 - Introdução à linguagem Haskell, tipos básicos, listas
- Dia 02: 05/10/2019 - Funções de alta ordem, Tipos de dados algébricos
- Dia 03: 19/10/2019
- Functors, Applicatives, Monads
Palestra
Elixir no Dia a Dia
Data: 19/10/2019 às 10h30
Local: UFABC, Campus Santo André, Bloco A, Sala S-213-0
Resumo
O objetivo dessa palestra vai apresentar como funciona a linguagem Elixir e a plataforma Erlang/OTP, e o que é diferente de outras linguagens funcionais. Em especial, como Elixir pode ser usada para desenvolver aplicações web e qual o impacto disso no dia a dia de um desenvolvedor.
Palestrante: Guilherme de Maio Nogueira
Guilherme de Maio Nogueira é desenvolvedor de software há mais de 10 anos e desde 2015 adotou Elixir como sua linguagem de programação principal. Organiza o meetup ELUG-SP e está sempre interessado em trazer mais pessoas para a linguagem.
Datas e Sala
- Datas: 28/09, 05/10 e 19/10
- Horário: 08h00 às 12h00
- Sala: L407-2, Bloco A, 4º andar
No último dia do curso (19/10 às 10h30) teremos uma palestra com Guilherme de Maio da Telnyx (https://telnyx.com/) que nos falará sobre o uso de linguagens funcionais, em particular Elixir, em um ambiente comporativo real.
O curso será ministrado pelos professores Fabrício Olivetti e Emílio Francesquini e terá duração de 12 horas.
Inscrições
- Número de vagas: 80
- Para se inscrever:
https://sig.ufabc.edu.br/sigaa/link/public/extensao/visualizacaoAcaoExtensao/884
- 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.
Pré-requisitos
Gostar de programar!
Como Chegar
Universidade Federal do ABC
Avenida dos Estados, 5001
Santo André - SP
CEP 09210-580
Acesso pelos endereços:
- Av. dos Estados, 5001.
- R. Abolição, 378
- R. Santa Adélia, (em frente ao no. 221)
Estações de trem próximas (recomendamos utilizar Uber para o trajeto estação-campus):
- Prefeito Saladino (CPTM L10)
- Santo André (CPTM L10)
Mais informações: http://www.ufabc.edu.br/a-ufabc/campi/santo-andre
Material do Curso
Aula | Slides | Material de apoio |
---|---|---|
28/09 | PDF; PDF com soluções | Código Exercícios |
05/10 | PDF; PDF com soluções | Código Exercícios; Exercício de análise e plotagem de Dados (Zip; Repo Github) |
19/10 | PDF; PDF com soluções (em breve) | Código Exercícios |
Atividades e Suporte
Atividades
As atividades do curso estão descritas e deverão ser submetidas pelo GitHub Classroom.
Aula | Prazo | Atividade | Link para submissão |
---|---|---|---|
Aula 01 | 19/10 | Lista 01 | https://classroom.github.com/a/1ayC4yUs |
Aula 02 | 26/10 | Lista 02 | https://classroom.github.com/a/yEyYld9m |
Aula 02 | 26/10 | Lista 02B | https://classroom.github.com/a/n3SYYixQ |
Aula 03 | 02/11 | Lista 03 | https://classroom.github.com/a/4po6laAz |
- Para submeter uma atividade, basta clicar no link da atividade para criar um novo repositório no Github.
- Não deixe de escolher o seu nome na lista para que possamos relacionar o usuário GitHub à você!
- O repositório é privado e todos os arquivos e alterações adicionados ao repositório poderão ser acessados apenas pelo aluno e pelo professor da disciplina.
Discussão e dúvidas
Durante o curso, utilizem o Discord (https://discord.gg/qDPxdbE) para tirar dúvidas. Nele também serão compartilhados materiais extras.
Metodologia e avaliação
Aulas práticas de programação em laboratório e palestra expositiva sobre o uso de Programação Funcional no ambiente de trabalho.
A avaliação será feita através de 06 atividades de programação a serem entregues em até duas semanas após o término das aulas.
Considerar-se-á aprovado quem:
- obtiver no mínimo 75% de presença.
- entregar 60% das atividades corretamente.
Contato
- Emilio Francesquini - e.francesquini@ufabc.edu.br
- Fabrício Olivetti - folivetti@ufabc.edu.br
Ou via Discord em: https://discord.gg/qDPxdbE