This is a course offered by the Graduate Program in Applied Computing (PPGCA) of the Federal University of Technology - Parana (UTFPR), originally intended for graduate students, but some undergraduate students and professionals can attend.
The "Introduction to Functional Programming" course, scheduled from September 30th to December 18th, will be a fully remote learning experience. Classes will be held on Thursdays from 17:50 to 21:10 (GMT-3). I expect students to keep their cameras on during most of the sessions.
Interested in joining? Go to PPGCA's site to learn more.
Adolfo Neto is an Associate Professor at UTFPR. He is a member of the Education, Training, & Adoption Working Group of the Erlang Ecosystem Foundation. He is also co-creator and co-host of the Elixir em Foco podcast, a podcast about Elixir and the BEAM for the Portuguese-speaking community. You can watch some videos related to this course here.
At the end of this course, you will be able to:
- solve problems using a functional programming language of your choice
- describe and discuss the main functional programming concepts
- apply the main functional programming concepts in your programs
- describe the main features of a concurrent functional programming language
The course is intended for Masters and PhD students but undergraduate foreign students and local undergrads with an interest in the topic are more than welcome. This course will be taught in English. There is no formal prerequisite in addition to a good understanding of English, as the discussed literature and interaction in class will be in that language.
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.
Project implementation involving a functional language.
Overview of functional languages for concurrency.
Important Dates: (SOON)
In construction
- Functional Programming: Concepts and Main Languages (LISP, Scheme, Clojure, Haskell, F# , Elixir, Erlang)
- Functions: functions as first-class citizens, named and anonymous functions, currying, modules
- Collections
- Variables
- Pattern Matching
- Data structures and Immutability
- Recursion
- Collection processing
- Lazy evaluation.
- Control flow
- Implementing projects using a functional programming language
- General view of concurrent functional programming languages (Erlang and Elixir)
Students will read papers, book chapters and gray literature on the topics of the course.
Besides that, the students will solve programming assignments.
Assessment will be based on participation on synchronous classes, on solving the programming assignments, and on other assignments to be defined during the course.
At the end of the course you should give a talk either about a functional programming language or about a library that provides functional programming support to non-functional programmng languages.
We will use Google Classroom for discussions and Google Meet sessions for our synchronous meetings.