Erlang MOOC

I just completed An Introduction to Functional Programming with Erlang, a mini-MOOC at the University of Kent. It was terrific!

Screen shot of master class

Erlang is a functional programming language created at Ericsson in the 1980s. In 1998, it was open-sourced. Erlang’s claim to fame is massive scalability with high reliability. Ericsson designed it for their telephony system. More recently, WhatsApp used it for their messaging system (you may have heard of this last year, when Facebook paid a huge sum of money for Whatsapp). I’m interested in Erlang because I’m excited about Elixir, a relatively new programming language (version 1.0 was released just last year) which runs on the Erlang virtual machine (BEAM). I figure everything I learn about Erlang will help my understanding of Elixir.

I installed the Erlang compiler and documentation on my Debian laptop with

sudo apt-get install erlang erlang-doc

Easy peasy! Now I can create hello.erl


hello() -> io:fwrite("Hello, World!\n").

and compile and run it in the Erlang REPL

$ erl
Erlang/OTP 17 [erts-6.2]  [64-bit] [smp:2:2] [async-threads:10] [kernel-poll:false]

Eshell V6.2  (abort with ^G)
1> c(hello).
2> hello:hello().
Hello, World!

Lemon squeezy! Now I’m ready to follow along with the course.

The mini-MOOC is a work in progress, but it’s very well done. It’s essentially the first three weeks of what will become a six week MOOC. It uses a University message board called Moodle now, but I think they intend to move to a proper MOOC system for the full course. As such, this three week pilot was limited to some 500 students.

The course is taught by Professor Simon Thompson. There are videos of him lecturing

Screen shot of Prof Thompson

presenting with slides

Screen shot of Prof Thompson with slide

and live coding

Screen shot of Prof Thompson live coding

There was also a “Master Class” segment filmed in a fancy studio (that’s the first photo at the top).

Additionally, there were quizzes and exercises. And every page had a discussion section where you chatted with other students. There was also a teaching assistant, Stephen Adams, who would show up there and post his solutions to the exercises, along with his comments about why he did things a certain way.

Erlang is kind of an odd language and takes some getting used to. I thought Prof Thompson did a good job of explaining the weirder parts, like what Erlang means by variable, assignment, and pattern-matching.

I enjoyed that Erlang was weakly typed, which let us concentrate on things like recursion, testing, and higher-order functions. Contrast this with the Haskell course, which would have us believe that functional programming is all about algebraic data types. Towards the end of the course, Prof Thompson hints that a stronger type system could be helpful for larger projects, but it was nice to not have to mess with it right from the start. That point came up again in a discussion video with Joe Armstrong (creator of Erlang) and Francesco Cesarini (Erlang Solutions Ltd).

Screen shot of Cesarini, Thompson, and Armstrong

Overall, I thought it was time well spent. Based on this pilot, whenever the full six-week course is ready, I would definitely recommend it.

Erlang MOOC