A 45-hour course for graduate and undergraduate students at UTFPR Curitiba.
- Functional Programming: Concepts and main languages.
- Functions: functions as first class citizens, named functions and anonymous functions, Currying, modules.
- Pattern Matching.
- Data structures and immutability.
- Recursion.
- Collection processing.
- Lazy evaluation.
- Control Flow.
- Implementation of projects using a functional language.
- Overview of functional languages for concurrency.
- Higher-order functions
- Layers
- Purity, ie, separating effectful code
- Why functional data structures are different from OOP or procedural data structures
- Why functional programming became interesting
- Other paradigms
- Parametric polymorphism?
- Lambda calculus, call-by-value, call-by-name. See also this.
- Thomas, Dave. Programming Elixir 1.6: Functional |> Concurrent |> Pragmatic |> Fun. Pragmatic Programmers, 2018.
- Almeida, Ulisses. Learn Functional Programming with Elixir: New Foundations for a New World. Pragmatic Programmers, 2018.
- Davi, Tiago. Elixir: Do zero à concorrência. Casa do Código, 2017.
- Sebesta, Robert W. Concepts of Programming Languages. 11th Edition, Pearson, 2015.
- Scientific papers and gray literature (blog posts, podcast episodes, videos, etc.)