Mini Course: Functional Programming

Functional programming (FP) is a programming paradigm where programs are constructed purely from function. FP programs tend to look different from their imperative counteparts and have a lot of interesting properties.

FP languages such as Haskell, Common Lisp, Scheme, Clojure, Erlang, Elixir, Elm, F# and more are used in a variety of fields. Recently, a lot of FP features have made their way into imperative languages such as Java, C++, Python, JavaScript and more. 

I dare say that learning FP concepts will make you a better programmer, regardless of your language of choice. In this course, we will cover some of the core concepts of FP using Haskell as an example.

Target audience

This course is suitable for people with prior experience in programming (in any language). 

Teachers

The teachers will be Vsevolod "Seva" Nikulin (PhD Student in Tani Unit) and Jeremie Gillet (FP Enthusiast).

Program

The program will be a combination of lectures and exercises with Haskell (using ghci as a REPL and a code editor of your choice).

Date Time Topic Lecturer
Wednesday, November 18 10AM - 12PM
  • Haskell syntax
  • Pure functions
  • Function composition
  • Currying
Jeremie
Friday, November 20 10AM - 12PM
  • Recursion
  • Folds
  • Maybe
  • Pattern Matching
Jeremie
Wednesday, November 25 10AM - 12PM
  • Immutability
  • Lazyness
  • Parallellization
  • Exercises
Seva
Friday, November 27 10AM - 12PM
  • Algebraic Data Types
  • Mapping over ADTs
  • Reader, Writer, State...
Seva

You will find all the material used for the course here.

There are three recorded lecture videos here session 2, session 3, session 4 (*missing the first lecture).

More information

  • Location: B701, Computer Lab, Lab 3.
  • Zoom link: if you prefer joining remotely, or if B701 exceeds 50% capacity, you can join using this link. Unfortunately, we won't be able to provide much help with the hands-on part via Zoom. 
  • What to bring: a laptop with Haskell pre-installed. Please try this in advance, and contact Jeremie if you have a problem.
  • Video Recording: this course might be recorded and uploaded online, only the teacher will be recorded. Contact Jeremie Gillet if you have reservations about this.
  • Drinks: There will be free coffee and tea, bring your cup!

If you are interested in the course but cannot participate to this particular event, let us know and we will contact you for any later occurrence.

Thank you very much for your interest.

Have you used this paradigm before? In which languages?
Why are you interested in this course? Is there a particular thing you would like to learn?