Monday, December 29, 2014

Post de teste para compartilhamento

Friday, December 26, 2014

MOOC - Princípios de Programação Funcional em Scala

Gostaria de aproveitar esse post para divulgar um excelente curso online gratuito na Coursera.

Trata-se do curso Princípios de Programação Funcional em Scala (Functional Programming Principles in Scala). Segue link: https://www.coursera.org/course/progfun.

O instrutor do curso é ninguém menos do que Martin Odersky, criador da linguagem Scala, fundador da empresa Typesafe e Pesquisador na  École Polytechnique Fédérale de Lausanne

Eu acompanhei a segunda versão do curso fora de época e posso atestar a qualidade em primeira mão. De fato o curso da Coursera é utilizado como parte das atividades na EPFL, ou seja, alunos do Professor Odersky se matriculam normalmente na Coursera junto a outros milhares de candidatos ao redor do mundo; na primeira versão do curso mais de 50.000 pessoas se inscreveram (veja as estatísticas).

O tom do curso é bastante acadêmico, entrando em detalhes sobre modelo de substituição logo na primeira aula e navegando no mundo de funções de alta ordem, currying, covariância, contravariância, pattern matching, tuplas, parâmetros implícitos, monoides, streams, etc. Mas acredito ele seja também de grande valia para a indústria. Meus colegas de trabalho sempre me escutam tagarelando sobre Scala... Principalmente quando esbarro em pedaços de código longos e difíceis de ler em Java com contrapartidas intuitivas e sucintas em Scala. Além disso, cada vez mais linguagens Orientadas a Objetos vem adotando construções típicas de linguagens Funcionais como genéricos (introduzidos no Java 5) e expressões lambda (suportadas em C# desde a versão 3.0 e e pelo Java 8 previsto para Março de 2014). 

Nada como adicionar uma linguagem "híbrida", concebida com expressividade e escalabilidade em mente, 100% interoperável com Java (e seu enorme ecossistema) e altamente performática ao seu conjunto de skills. Além do que, aprender a mentalidade da programação funcional te faz um programador melhor em geral... Após minha experiência com Scala acabei descobrindo jóias do Apache Commons e Google Guava que possibilitam escrever código Java muito mais limpo. Também reforcei meu padrão de pensar mais / escrever menos código (os exercícios do curso realmente te fazem quebrar a cabeça, e no fim das contas as soluções são sempre simples).

O curso tem duração de sete semanas. A cada semana o aluno recebe o material de estudo (incluindo vídeos do Martin Odersky) e uma atividade de programação (com data de entrega para a próxima semana). O aluno pode submeter os exercícios através de um plugin do sbt (ferramenta de build popular entre desenvolvedores Scala). A correção dos exercícios é feita automaticamente em servidores (no Amazon EC2) que rodam testes unitários e analisadores estáticos de código contra a solução submetida. O aluno recebe uma nota de 0 a 10 e feedback sobre seu exercício  de maneira quasi-instantânea. A correção leva em consideração:
  • Testes unitários
  • Estilo (indentação, espaços em branco, etc) 
  • Boas práticas da programação funcional em Scala (evitar casts, variáveis locais mutáveis, uso de return, etc) 
  • Prazo de entrega (cada dia de atraso desconta 20% da nota)
O aluno pode submeter respostas para o mesmo exercício até cinco vezes com o objetivo de refinar sua implementação. São aprovados no curso (com direito a certificado oficial) alunos que obtiverem média acima de 60%.

Além do arsenal para correção automática de exercícios, o curso conta com um rico fórum de discussão em que alunos podem interagir, formar grupos de estudo e submeter / responder questões. Os fóruns são moderados por assistentes voluntários (comunidade) e staff oficial do curso para garantir a qualidade das discussões (bem como evitar que os alunos "colem").

A experiência do curso é muito enriquecedora, definitivamente vale a pena.

E ainda dá tempo de se matricular! A data de entrega para o primeiro exercício é dia 25/09/2013... No pior caso, se você perder essa data é possível passar no curso sem entregar o primeiro exercício (obtendo boas notas nos demais exercícios).

Então o que está esperando? Venha participar!