Functional Programming in Erlang course overview

A new course on functional programming has finished on Future Learn. Now it was the time for some Erlang. Organised by The University of Kent and taught by Professor Simon Thompson this course is a very good opportunity to explore how Erlang applies the functional programming paradigm.

The course lasts for only 3 weeks but requires around 5 hours per week, with many exercises and assignments. It was taken by more than 4000 people which is amazing.

Course Syllabus

Let's go quickly through the contents of the course:

Week 1

The first week starts with a short introduction to Erlang and how to set up the environment. Then it goes through the basics, data types, functions, variables and pattern matching. The last section covers recursion and tail recursion and shows how it can be powerful in combination with pattern matching.

Week 2

The week 2 introduces the list data type and how to process it. You will also find lots of exercises which will help to consolidate the material better.

Week 3

The last week covers higher-order functions. Also, the author walks through some of the most widely used operations on lists which use higher-order functions: mapping, filtering, reducing and zipping. You may find them already implemented in the standard library but it's still fun to write them by yourself. Then it follows on with some very interesting exercises in which you have to model the game of rock-paper-scissors. And finally, it ends with a conclusion and a very interesting discussion with Simon Thompson, Joe Armstrong, one of the creators of the language, and Francesco Cesarini, founder of Erlang Solutions.

Retrospective

What was good:

  1. The videos are comprehensive and not very long (with a few exceptions).
  2. Covers the basics of Erlang and functional programming.
  3. Peer reviewed assignments - a good way to find out how your code can be improved.
  4. Many exercises available to practice on.
  5. A big plus for the Master Classes.
  6. The last but not the least, a nice opportunity to learn something new.

Things to improve/change:

  1. The required amount of time per week - it can be tricky for some people with a full-time job to be fully involved in the course. Spreading the course over a 4-week period could make it easier.
  2. It would be awesome to have a separate section for learning resources which would be easy to find (worth mentioning that a few books are recommended here).

What's next?

The logical continuation would be exploring the features of Erlang further, reading one of the recommended books and writing some real stuff. Also, there is a Concurrent Programming in Erlang course which will start very soon. I expect to get some insights on OTP which is the first thing that comes into my mind when someone mentions Erlang.

Overall, a very good and challenging course that is definitely worth taking.

Happy learning!