Hacker Courses The online courses programmers keep recommending, ranked from 20 years of public forum comments.
i
#283 overall

Introduction to Functional Programming

edX

2 recommenders · 2 threads · recommended in 2 years, 2015–2018 · score 1.8

Go to course ↗

An introductory edX MOOC on functional programming taught by Erik Meijer. It covers FP concepts in general rather than being strictly about Haskell, and includes labs that can be done in Haskell.

Commenters say Meijer explains hard concepts simply and that the course gave them a solid start before reading Haskell books.

Programming Languagesbeginnerinteractive MOOC#functional programming#haskell#erik meijer#edx#concepts

Recommendations by year

20062026

What commenters said (3)

  1. Recommendscalebjosue2018in “Ask HN: Best resource for learning Haskell?”

    Reading and solving the exercises in the book "Programming in Haskell" by Graham Hutton. Another great resource is going through the edX's MOOC "Introduction to Functional Programming" by Erik Meijer, and use Haskell to solve the labs. Don't forget to have fun!

  2. Recommendsmod3rn02015in “Learn You a Haskell for Great Good (2008)”

    For newcomers I'd suggest this introductory course by Erik Meijer: https://www.edx.org/course/introduction-functional-programmi... . It's about FP, not strictly Haskell, but it really helped me starting with it and really stimulated my curiosity (and he really can explain hard concepts in a simple way imo). I started reading the book after I completed the course and helped giving an answer to a lot of questions I had during the course.

  3. Mentionsbad_user2015in “Programmers: Before you turn 40, get a plan B (2009)”

    Having worked with Ruby on Rails in the past and with Play2 and Scala currently, I think I can answer that.

    For your regular web app, both frameworks are mostly the same, both are boring - Rails is more productive for very common tasks, but Play2 is safer because of the underlying language (well, if you pick Scala, otherwise Java just stays in your way). Things get more interesting in Play2 when scalability or latency starts to matter.

    That's when you discover that Play2's architecture is entirely asynchronous and that Play2 supports asynchronous responses and web sockets natively. It does so by means of futures [1], actors [2] and iteratees [3] (also being migrated to reactive streams [4]).

    Of course, the easy route with Play2 would be with Java, however I recommend that you pick up Scala. By doing so you're going to get exposed to concepts from functional programming in a language sitting on a platform that's very much practical for real world use. There's also this book on functional programming in Scala that's amongst the best books written on the subject [5]. Functional programming changes the way you think and it's all about sanity, functional code being easier to test, being easier to parallelize and being much less prone to accidental bugs.

    But while you're at it also consider learning Haskell, probably the best functional programming language available, because even if you're not using it, it's currently the lingua franca for FP concepts, so when reading papers and blog articles on interesting design patterns related to FP, most of them are described in Haskell. It also spoils you with its incredible type system, so a language like Scala will become the minimum that you'll tolerate, working in Java, C#, Python or Go becoming unbearable ;-) A really good beginners course is this one from edX [6]. And then go learn Clojure, because it's a really practical LISP that is also oriented towards FP, except that FP in a LISP is really different from FP in static languages like Haskell or Scala.

    And you know, the best thing about this path is that you're not going to learn just a framework, or yet another language, but you're going to learn about functional programming, which is a concept that transcends programming languages with its related mentality and design patterns and is useful no matter what you're doing and in what language.

    But then going back to Scala and Play2, well that's useful right now too. And did you know that Scala compiles to Javascript too and it's awesome?

    [1] http://docs.scala-lang.org/overviews/core/futures.html

    [2] http://akka.io/

    [3] https://www.playframework.com/documentation/2.3.x/Iteratees

    [4] http://www.reactive-streams.org/

    [5] http://www.manning.com/bjarnason/

    [6] https://www.edx.org/course/introduction-functional-programmi...

    [7] http://www.scala-js.org/

Related courses

Keyboard

In the course grid
←↑→↓
Move between courses
Home End
Start / end of row (with Ctrl: first / last)
PgUp PgDn
Jump several rows
Enter
Open course
S
Save / unsave course
1–5
Best, Trending, Hidden gems, Evergreen, Saved
[ ]
Previous / next topic
On a course page
← →
Previous / next course in your list
S
Save / unsave
O
Open the course website
Esc
Back to the grid
Everywhere
/
Search
T
Light / dark theme
?
This help