|
| 1 | +# Plano de Ensino Sistemas Distribuídos |
| 2 | + |
| 3 | +## Ementa |
| 4 | + |
| 5 | +Preparar aulas a partir da seção "Conteúdo Programático" |
| 6 | + |
| 7 | +- Introdução e benefícios da programação funcional. |
| 8 | +- Fundamentos da programação funcional em linguagens dinâmica e estaticamente tipadas. |
| 9 | +- Imutabilidade e corretude de software. |
| 10 | +- Funções puras. Funções como elementos de primeira classe. |
| 11 | +- Referências de funções/métodos. |
| 12 | +- Funções de callback. |
| 13 | +- Composição de funções. |
| 14 | +- Diferenças entre programação funcional e orientada a objetos. |
| 15 | +- Diferenças de uso de programação funcional em linguagens dinâmica e estaticamente tipadas. |
| 16 | +- Expressões lambda (lambda expressions / arrow functions) e funções anônimas. |
| 17 | +- Modelo de programação Map/Reduce: operações de filtro, mapeamento e redução em conjuntos de dados. |
| 18 | +- Processamento paralelo de dados. |
| 19 | +- Aridade de funções e o impacto em programação funcional. |
| 20 | +
|
| 21 | +## Conteúdo Programático |
| 22 | + |
| 23 | +- ✅ Introdução e benefícios da programação funcional. |
| 24 | +- Fundamentos da programação funcional em linguagens dinâmica e estaticamente tipadas. |
| 25 | +- ✅ Imutabilidade e corretude de software. |
| 26 | +- ✅ Funções puras. Funções como elementos de primeira classe. |
| 27 | +- Funções de callback. |
| 28 | +- Referências de funções/métodos. |
| 29 | +- Composição de funções. |
| 30 | +- ✅ Diferenças entre programação funcional e orientada a objetos. |
| 31 | +- Diferenças de uso de programação funcional em linguagens dinâmica e estaticamente tipadas. |
| 32 | +- Expressões lambda (lambda expressions / arrow functions) e funções anônimas. |
| 33 | + * Effective final em Java e outras linguagens: variáveis final/const por padrão |
| 34 | +- Modelo de programação Map/Reduce: operações de filtro, mapeamento e redução em conjuntos de dados. |
| 35 | +- Processamento paralelo de dados. |
| 36 | +- Aridade de funções e o impacto em programação funcional. |
| 37 | +
|
| 38 | +## Justificativa |
| 39 | + |
| 40 | +### Competências |
| 41 | + |
| 42 | +- Compreender os benefícios da programação funcional e sua importância atual no desenvolvimento de software. |
| 43 | +- Compreender a estrutura de um código utilizando programação funcional. |
| 44 | +- Compreender como diferentes paradigmas de programação podem coexistir em uma mesma base de código. |
| 45 | +- Entender os benefícios da programação funcional para o reuso de funções e concisão de código. |
| 46 | +- Entender o conceito de funções com responsabilidade única na programação funcional e os benefícios para o teste de software. |
| 47 | +- Entender as diferenças entre a criação de expressões lambda vs passagem de referência para funções/métodos. |
| 48 | +- Entender os perigos da mutabilidade e como escrever código com dados imutáveis. - Conhecer as boas práticas em programação funcional e uso de funções de callback. |
| 49 | +
|
| 50 | +### Habilidades |
| 51 | + |
| 52 | +- Utilizar recursos de programação funcional de linguagens dinâmica e estática/fortemente tipadas. |
| 53 | +- Aplicar processamento de dados por meio de operações de mapeamentoe redução. |
| 54 | +- Realizar busca e filtragem de dados com programação funcional. |
| 55 | +- Aplicar conceitos de imutabilidade em processamento de dados com programação |
| 56 | +funcional. |
| 57 | +- Realizar agrupamento de dados e cálculo de estatísticas com programação funcional. |
| 58 | +- Criar expressões lambda (lambda expressions / arrow functions) e passá-las por parâmetro para outras funções. |
| 59 | +- Declarar funções em variáveis / constantes. |
| 60 | +- Passar funções como parâmetro para outras funções. |
| 61 | +- Reutilizar funções com programação funcional. |
| 62 | +
|
| 63 | +## Objetivo Geral |
| 64 | + |
| 65 | +Apresentar os conceitos fundamentais de programação funcional e obter prática na escrita de código seguindo tal paradigma. |
| 66 | + |
| 67 | +## Objetivos Específicos |
| 68 | + |
| 69 | +- Compreender os fundamentos de programação funcional |
| 70 | +- Entender a importância de tal paradigma |
| 71 | +- Conhecer os recursos de diferentes linguagens funcionais |
| 72 | +- Escrever código seguindo tal paradigma usando linguagens estáticas e dinâmicas |
| 73 | +
|
| 74 | +## Metodologia |
| 75 | + |
| 76 | +Aulas assíncronas gravadas, expositivas e práticas com exercícios propostos. |
| 77 | + |
| 78 | +## Bibliografia Básica |
| 79 | + |
| 80 | +1. JDK 8 Massive Open and Online Course: Lambdas and Streams Introduction |
| 81 | +(somente inglês). Oracle Learning Library. 2016. Disponível em https://apexapps.oracle.com/pls/apex/f?p=44785:145:10103135022719::NO:RP,145:P145_EVENT_ID,P145_PREV_PAGE:5067,2 |
| 82 | +2. Processing Data with Java SE 8 Streams. Oracle. 2014. Disponível em https://www.oracle.com/technical-resources/articles/java/ma14-java-se-8-streams.html |
| 83 | +3. JavaScript. Mozilla Developer Network (MDN). 2022. Disponível em https://developer.mozilla.org/pt-BR/docs/Web/JavaScript |
| 84 | +4. Introduction to Functional Programming: JavaScript Paradigms (somente inglês). TopTal Inc. Disponível em https://www.toptal.com/javascript/functional-programming-javascript |
| 85 | +
|
| 86 | +## Bibliografia Complementar |
| 87 | + |
| 88 | +1. SILVA, Maurício Samy. JavaScript: guia do programador. São Paulo: Novatec, 2010. 604p., il. (n. 1). ISBN 978-85-7522-248-5. |
| 89 | +2. GOODMAN, Danny. JavaScript: a bíblia. Tradução de Daniel VIEIRA. Rio de Janeiro: Campus, 2001. 909 p. (n. 1). ISBN 85-352-0828-3. |
| 90 | +3. MORRISON, Michael. Use a cabeça ! Java script. Rio de Janeiro: Alta Books, 2008. 606 p. (n. 1). |
0 commit comments