Resumo:Quando programadores de linguagens de programação mais tradicionaiscomo C, C++, Java ou Python precisam de uma estrutura de dados (ED)específica (ou uma variação de EDs clássicas que já conhecem) e elanão está imediatamente disponível como uma biblioteca, eles sempre têma opção de abrir qualquer livro de algoritmos e EDs e copiar o códigoquase que diretamente em seus programas. Desenvolvedores já seacostumaram a, prontamente, se beneficiar de uma vasta gama desoluções que são corretas e eficientes catalogadas e explicadas eminúmeros livros textos.Infelizmente programadores de linguagens funcionais como HaskellErlang/Elixir, Clojure ou ML não podem se dar a esse luxo. Apesar demuitos desses textos se dizerem independentes da linguagem deprogramação, eles são independentes apenas no sentido Henry Ford:"Programadores podem usar a linguagem que quiserem, contanto que elaseja imperativa!".Apesar de linguagens funcionais estarem amplamente disponíveis há maisde 50 anos (Lisp foi apresentada ao mundo em 1958), surpreendentementeo primeiro livro texto que aborda estruturas de dados e seusalgoritmos em um contexto funcional só foi publicado por Okasaki em1998, ou seja, 40 anos após o nascimento de Lisp.EDs funcionais têm diversas características que as diferenciam de suascolegas imperativas. Essas diferenças são tantas que justificam o seuestudo de maneira independente. Por exemplo, EDs funcionais sãopersistentes, o que significa que diversas versões da mesma ED podemconviver simultaneamente facilitando, por exemplo, a programaçãoconcorrente e paralela nestas estruturas.Neste curso vamos explorar algumas estruturas de dados funcionais maiscomuns ao mesmo tempo que ensinamos as técnicas que são utilizadas nassuas implementações. Assim, ao final deste curso, o aluno saberádesenvolver a sua própria ED ou adaptar uma ED imperativa a umcontexto funcional sempre que precisar.Justificativa:Com uma demanda cada vez maior por profissionais com conhecimento emlinguagens funcionais, esse curso se justifica para suprir a falta deprofissionais capacitados nessa área. Essa demanda pode ser constatadapela grande quantidade de inscritos nos cursos relacionados anterioresocorridas em 2018 e 2019 onde profissionais de mais de 15 empresasdiferentes (entre elas Itaú, Accenture, Thomson Reuters, NuBank,GymPass, ...) além de alunos de 6 universidades além da UFABC seinscreveram (num total de mais de 150 inscrições).O presente curso faz parte da série de cursos relacionados àprogramação funcional e os alunos que participaram dos três cursosanteriores (Programação Funcional em Haskell (2018, 2019) e Teoria dasCategorias para Programadores (2019) serão avisados pela lista dee-mails formada na ocasião. O curso será amplamente divulgado para acomunidade externa via listas de e-mails acadêmicos (SociedadeBrasileira de Computação, USP, Mackenzie, Unicamp, PUC, etc.) eprofissionais (Itaú, Nubank, Amazon, etc.) além das próprias redessociais profissionais tipicamente utilizadas na iniciativa privadacomo LinkedIn.Apesar de não haver garantias de que o público alvo serapredominantemente formado pelo público externo, a participação dopúblico externo à universidade nos cursos relacionados anteriores, comodescrevemos acima, mostra um alto nível de interesse dos profissionaisde fora da comunidade acadêmica. Além disto a escolha por ministrar asaulas aos sábados visa, justamente, a maximização do número departicipantes externos por ser, normalmente, uma opção de horário maisviável aos que trabalham na iniciativa privada.MetodologiaAulas teóricas com exemplos e demonstrações reais dos algoritmos eestruturas de dados implementados durante as aulas.AvaliaçãoO aluno será avaliado através de 03 atividades de programação a serementregues em até duas semanas após o término das aulas.O aluno será considerado aprovado se:- obtiver no mínimo 75% de presença.- entregar 60% das atividades corretamente.
23/11: Por que EDs funcionais?; Persistência; Listas; Heaps; Árvores30/11: Árvores de busca balanceadas (Rubro-Negra e AVL); Avaliação preguiçosa; Princípios de análise amortizada; Heaps preguiçosos7/12: Listas com acesso aleatório; Monoides; Finger trees
Discentes, docentes e TAs
Programadores de desenvolvedores da área de TI que utilizam princípios funcionais de programação
Não há fotos cadastradas para esta ação
SIGAA | UFABC - Núcleo de Tecnologia da Informação - ||||| | Copyright © 2006-2024 - UFRN - sigaa-2.ufabc.int.br.sigaa-2-prod v4.9.3