adolfont / caes005-introduction-to-functional-programming

CAES005 - Introdução à Programação Funcional

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CAES005 - Introduction to Functional Programming

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.

2023 offering

The "Introduction to Functional Programming" course, which is scheduled to take place from October 5th to December 20th, has been designed as a fully remote learning experience. This course will be conducted on Tuesdays, from 19:00 to 22:00 (GMT-3). I expect all students to have their cameras turned on, at least for most classes.

Instructor

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.

Learning Objectives

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

Prerequisites

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.

Syllabus

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.

Schedule

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)

Learning methodology and assessment

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.

Technological Support

We will use Google Classroom for discussions and Google Meet sessions for our synchronous meetings.

Links

Tiobe Index

StackOverflow Developer Survey

About

CAES005 - Introdução à Programação Funcional

License:Creative Commons Zero v1.0 Universal


Languages

Language:Elixir 97.7%Language:Dockerfile 2.3%