ejc123

ejc123

[Erlang] Functional Programming in Erlang (University of Kent) (free)

In case you want to learn Erlang. This course starts in a couple of weeks. I have not taken any other courses from this venue, but I’m signed up for this one. I’ll be sure to report back with my experience.

Edit: There’s now also a course on concurrency.

Most Liked

thompson_si

thompson_si

Author of Erlang Programming

And we’re following up with a MOOC on concurrent programming in Erlang, too.

https://www.futurelearn.com/courses/concurrent-programming-erlang/1

14
Post #9
peerreynders

peerreynders

If I understand correctly the content of Functional Programming in Erlang is accessible for another two weeks, after that it is only available for those who have paid for an upgrade.

The three weeks of Concurrent Programming in Erlang will cover:

  1. Processes in Erlang
  2. Fault Tolerance in Erlang
  3. A “little bit” of OTP

Now in my estimation Functional Programming in Erlang should have benefitted any Elixir developer wishing to improve their handle on functional programming principles, in particular:

  • Effective use of pattern matching (i.e. not just here and there - but everywhere)
  • Effective use of body and tail recursion.
  • Effective use of higher order functions, especially foldl/foldr, map, filter and related

The Erlang shouldn’t be a hurdle to anyone using the basics of Elixir - it may not feel as “nice” to some but to me Erlang has a very practical, “get stuff done” feel about it.

However don’t be fooled by the “5 hours per week for 3 weeks”. Doing that, you might as well be flipping through a magazine for all the good it does. You have to be prepared to do the exercises and assignments to get the maximum benefit and that is going to take a significant amount of time and effort.

Now there were repeated complaints that the exercises were not based on “real world examples” - but the exercises were chosen to maximize the density of problem solving opportunities for application of pattern matching, recursion and higher order functions. “Real world examples” would likely make the course even longer without necessarily covering more ground.

Granted, while I didn’t find the subject matter of the various exercises all that engaging, the functional programming problem solving going into the final “rock, paper, scissors” strategies implementation exercise ultimately was quite engaging.

To close off here are some choice quotes from Erlang Master Class 1: Video 8 - Discussion:

FRANCESCO CESARINI: And the six months, it’s not a learning curve. It’s more of an unlearning curve. So unlearning the object-oriented way of doing things.

FRANCESCO CESARINI :

  • The first hurdle is pattern matching.

  • The second hurdle is understanding recursion and the whole concept of tail recursion versus non-tail recursion.

  • And the third kind of hurdle is thinking concurrently.

    JOE ARMSTRONG: And both of you, what do you think the best way to learn Erlang is?
    SIMON THOMPSON: Practice. Practice. … You don’t learn to swim by reading a book about swimming. … things become easier the more you do them.

JOE ARMSTRONG: So once you’ve learnt Haskell, up to monads and things like that, it looks very much like Erlang. You just move the brackets around a bit. You take the brackets out, actually, and you move the commas, there’s less syntactic noise.

FRANCESCO CESARINI: I found Haskell and Erlang, at least when taught in university, is very complementary of each other as well. And my opinion is that any student taking a computer science degree should learn both.

FRANCESCO CESARINI: I mean, we use Erlang as the glue to handle the whole orchestration. And then we use Python, C, Julia. No not at all. It is actually language intended to act as a hub towards other languages. And Interfacer could be protocols. There could be a RESTful APIs or other programming languages. It’s ideal for that.

JOE ARMSTRONG: When I teach it, the students start asking where’s the debugger? And I say, well, there isn’t a debugger. Or there is a debugger, but no Erlang programmers use it. And they say, well, why’s that? And I say, well, because you don’t have variables that are changing under your feet that it’s difficult to reason about it. Once they’ve got a value, they’ve got the value forever, and they acquire it in one place, and therefore, you don’t need to track it.

FRANCESCO CESARINI: I would judge where not to use Erlang, I think two very distinct cases are, for example, number crunching, and your graphical interfaces, the libraries, are appalling.
JOE ARMSTRONG: So if you had to choose one strong point for Erlang, what would you say was its unique strong point?
FRANCESCO CESARINI: Massive concurrency. Orchestration. The fact that your systems behave in a predictable way under extreme heavy load, extreme heavy load under an extended period, or under extremely high peak load as well. You won’t get any degradation of throughput in your system.

alamba78

alamba78

There are two courses offered by the University of Kent online. They are Functional Programming in Erlang and Concurrent Programming in Erlang. I am half way through Concurrent Programming in Erlang, which is supposed to be the 2nd course from what I gather. It is following along with the book, Designing for Scalability with Erlang/OTP. You can get a certification or take the course for free.

https://www.futurelearn.com/courses/functional-programming-erlang

https://www.futurelearn.com/courses/concurrent-programming-erlang

Where Next?

Popular in Courses Top

arrowsmith
Hi, I’m George Arrowsmith - you may remember me from such educational Elixir content as Learn Phoenix LiveView, Phoenix on Rails, and Ma...
New
OvermindDL1
There are a few CS teachers who’ve taught/teach at MIT that think that there are some things should be taught for CS but aren’t, so they ...
New
AstonJ
Your Video Guide to Elixir Learn one of the best new programming languages with in-depth, step by step screencasts.
New
mat-hek
Hi everyone! We just released the Elixir Language Tour guide – an interactive intro to Elixir. The guide itself is written in Elixir an...
New
CharlesIrvine
Elixir AI Tools is a course providing a survey of Elixir AI tools and frameworks. It provides a fairly in depth introduction to each topi...
#ai
New
AstonJ
Grox.io looks really nice and I love that they’re doing a Joe Armstrong tribute :heart: Bruce Tate (@redrapids) has put together a team ...
New
New
lauraesteves
Stuck at home and want to make the most of it? Here’s your chance to help fighting COVID-19 while helping yourself grow as well. Learn a...
New
lubien
I’ve been posting videos about LiveView JS Commands in my Youtube channel and so far I have 3 already published and 5 recorded and in edi...
New
kpanic
https://pragprog.com/screencast/v-roerlang/modern-erlang-for-beginners An in-depth introduction to coding with Erlang, a general-purpos...
New

Other popular topics Top

AstonJ
Posting this to see if we can make things easier for people to get into Neovim. If you use Neovim and have a favourite distro please let ...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
johnnyicon
Hi all, I’ve just started learning Elixir and Phoenix Framework, so please pardon my n00bness at this stage. I’m trying to use Postgres...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 39467 209
New
AstonJ
Please see the new poll here: Which code editor or IDE do you use? (Poll) (2022 Edition) It’s been a while since we first asked this, I...
208 31265 143
New
komlanvi
Hi everyone, I was playing with phoenix liveView but I run into an issue. I have a form and want to validate each input text when the te...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement