Gostaria de aproveitar esse post para divulgar um excelente curso online gratuito na Coursera.Trata-se do curso Principios de Programacao Funcional em Scala (Functional Programming Principles in Scala). Segue link: https://www.coursera.org/course/progfun.O instrutor do curso e ninguem menos do que Martin Odersky, criador da linguagem Scala, fundador da empresa Typesafe e Pesquisador na Ecole Polytechnique Federale de Lausanne. Eu acompanhei a segunda versao do curso fora de epoca e posso atestar a qualidade em primeira mao. De fato o curso da Coursera e 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 versao do curso mais de 50.000 pessoas se inscreveram (veja as estatisticas).O tom do curso e bastante academico, entrando em detalhes sobre modelo de substituicao logo na primeira aula e navegando no mundo de funcoes de alta ordem, currying, covariancia, contravariancia, pattern matching, tuplas, parametros implicitos, monoides, streams, etc. Mas acredito ele seja tambem de grande valia para a industria. Meus colegas de trabalho sempre me escutam tagarelando sobre Scala... Principalmente quando esbarro em pedacos de codigo longos e dificeis de ler em Java com contrapartidas intuitivas e sucintas em Scala. Alem disso, cada vez mais linguagens Orientadas a Objetos vem adotando construcoes tipicas de linguagens Funcionais como genericos (introduzidos no Java 5) e expressoes lambda (suportadas em C# desde a versao 3.0 e e pelo Java 8 previsto para Marco de 2014). Nada como adicionar uma linguagem "hibrida", concebida com expressividade e escalabilidade em mente, 100% interoperavel com Java (e seu enorme ecossistema) e altamente performatica ao seu conjunto de skills. Alem do que, aprender a mentalidade da programacao funcional te faz um programador melhor em geral... Apos minha experiencia com Scala acabei descobrindo joias do Apache Commons e Google Guava que possibilitam escrever codigo Java muito mais limpo. Tambem reforcei meu padrao de pensar mais / escrever menos codigo (os exercicios do curso realmente te fazem quebrar a cabeca, e no fim das contas as solucoes sao sempre simples).O curso tem duracao de sete semanas. A cada semana o aluno recebe o material de estudo (incluindo videos do Martin Odersky) e uma atividade de programacao (com data de entrega para a proxima semana). O aluno pode submeter os exercicios atraves de um plugin do sbt (ferramenta de build popular entre desenvolvedores Scala). A correcao dos exercicios e feita automaticamente em servidores (no Amazon EC2) que rodam testes unitarios e analisadores estaticos de codigo contra a solucao submetida. O aluno recebe uma nota de 0 a 10 e feedback sobre seu exercicio de maneira quasi-instantanea. A correcao leva em consideracao:Testes unitariosEstilo (indentacao, espacos em branco, etc) Boas praticas da programacao funcional em Scala (evitar casts, variaveis locais mutaveis, uso de return, etc) Prazo de entrega (cada dia de atraso desconta 20% da nota)O aluno pode submeter respostas para o mesmo exercicio ate cinco vezes com o objetivo de refinar sua implementacao. Sao aprovados no curso (com direito a certificado oficial) alunos que obtiverem media acima de 60%.Alem do arsenal para