Chevron Left
Back to Functional Program Design in Scala

Learner Reviews & Feedback for Functional Program Design in Scala by École Polytechnique Fédérale de Lausanne

2,849 ratings
485 reviews

About the Course

In this course you will learn how to apply the functional programming style in the design of larger applications. You'll get to know important new functional programming concepts, from lazy evaluation to structuring your libraries using monads. We'll work on larger and more involved examples, from state space exploration to random testing to discrete circuit simulators. You’ll also learn some best practices on how to write good Scala code in the real world. Several parts of this course deal with the question how functional programming interacts with mutable state. We will explore the consequences of combining functions and state. We will also look at purely functional alternatives to mutable state, using infinite data structures or functional reactive programming. Learning Outcomes. By the end of this course you will be able to: - recognize and apply design principles of functional programs, - design functional libraries and their APIs, - competently combine functions and state in one program, - understand reasoning techniques for programs that combine functions and state, - write simple functional reactive applications. Recommended background: You should have at least one year programming experience. Proficiency with Java or C# is ideal, but experience with other languages such as C/C++, Python, Javascript or Ruby is also sufficient. You should have some familiarity using the command line. This course is intended to be taken after Functional Programming Principles in Scala:

Top reviews


Sep 15, 2016

This is a university degree course which takes enormous effort to complete. But still its beond the programming course range giving you whats not possible to google or learn practical way. Thanks!


Mar 18, 2018

Thank you for this exciting course! I did the FP in Scala course a few years ago and decided to do the full certification now. I am looking forward to the next courses in the specialisation.

Filter by:

201 - 225 of 468 Reviews for Functional Program Design in Scala

By jose c a

May 18, 2017



Jul 27, 2017

Thank you

By Andy R

Feb 05, 2017

very good

By Ming Y

Oct 20, 2016


By Light0617

Apr 29, 2019


By Ruben A D

Jan 20, 2018


By Yurii K

Dec 13, 2017


By Ronald C M

Oct 21, 2017

The best

By Almaz

Jul 11, 2017


By Alex G

Jul 04, 2016


By 林鼎棋

Jul 02, 2017


By Alexander R

Jul 08, 2018


By Taewoo K

Mar 23, 2020


By Sebas O C

Jul 23, 2019


By Hyung-tak J

Jul 25, 2016


By Marius K

Feb 25, 2018

This course is OK as a successor of "Functional Programming Principles in Scala". You definitely learn a lot of new functional concept, the material is presented well and the homework is engaging (though it is debatable if it couldn't be more closely related to the course content).

Participants should know, though, that this is a condensed version of a previous Coursera course by the same authors, "Principles of Reactive Programming", which is no longer available. Compared to the earlier course, the present course is less coherent – it consists more or less of a subset of the earlier course’s lectures (videos). As a consequence, the instructors sometimes refer to earlier or later lectures that are not actually there (or at least not in the expected order). (I recommend participants to look up the missing lectures on Youtube:

Lastly, I do not think the title "Functional Program Design" is appropriate. I would call it "Elements of Reactive Programming in Scala" or something similar.

By Kota M

Jan 24, 2018

This was my first experience with Functional Programming and also Scala. I found many parts of the course challenging, but also so much fun to me.

During the course, the teacher talks about the Scala development techniques, but also fundamental implementation of Scala language. I think the course will be more informative if the two kinds are clearly separated, since people would have different motivations towards the course. Many people may not need to understand what is going on behind the abstract functionality for their practice, but knowing them will push them up to higher levels.

I myself wanted to focus on getting used to coding with Scala, even if I am not 100% sure how the things are going on behind scene. Fundamental topics will be of my interest once I become a intermediate developer of the language.

By Mikhail K

Jul 16, 2017

Just a little comment. Week 4 was somewhat of a letdown. Such central to FPD theme as reactive programming is overcondensed into really limited amount of time. 1 Week feels like a waisted opportunity which only scratched a surface. And it's quite obvious that authors planned it to be longer (mr. Odersky even explicitly mentions 3 weeks of material in first 3 lectures of Week 4) and more in depth but for some reason that didn't come to be. Also inclusion of materials from other course (RP) for some introduction of Future monad goodness doesn't look very nice from perspective of professionalism. It's obvious that authors struggled with deadlines, so until this course's revision and improvement just 4 out of 5 from me (compared to 5 out of 5 for Course 1 from the Specialization), sorry!

By Ilari V

Jul 17, 2016

Mostly as good as the course "Functional Programming Principles in Scala" I took couple of years ago. However, some of the videos are clearly taken from another courses and referencing to content not in this course. Especially the final week's content is very confusing, topics changing constantly without clear context and presentation. (I actually purposedly skipped the last few videos, as they seemed completely off the track and it was very hard to get anything out of them.)

The exercices were good, starting where the previous course ended, and most of the videos were clear and well done (basically the videos by Martin).

By Antoine L

Mar 13, 2019

This course felt a bit less fundamental than the Functional Programming Principles but offered some nice introduction to more advanced concepts that feel to bridge the gap between theoretical advantages and real-world use cases.

On the other hand the Monad concept which I often hear about still feels a bit fuzzy, I felt like less time was dedicated to theory in this course.

This time again the exercises are challenging but fun and above all really help internalizing the concepts, although it feels like it will take me more work to really grok Signals not to mention Future which are not used in any exercises.

By Ashvin L

Mar 25, 2018

The content is excellent. It needs to be better organized. We learnt a lot about Monads, Futures, etc, but there was nothing to test them.

Week4 organization requires a lot more work. It appeared as though, the professors have taken some other course content and re purposed it for this course. While that in itself is not bad, what has happened unfortunately is that the jumps in the lectures are very sudden and many things do not make sense.

Some of the "inductive programming" proofs are quite long and tedious and does not gel with the flow of the course.

By lu

May 24, 2017

1 . Some content quite confusing and not well explained(e.g Future, Monads ..).

2. Scala.react package mentioned, the paper that describes it is good, but seems this package deprecated already?? No practical example.

3. Akka Actor was said to be covered in the previous "Reactive programming principle" course, disappeared here, and some other content gone, too.

I thinks FRP is quite interesting, hope this course structure can be improved and more examples/practical assignments provided.

By Pavel A

Sep 26, 2016

I would have loved to spend more time on FRP and Futures. Both of those sections could have been expanded and an assignment dealing with Futures would be very welcome. Also, the mish-mash of Futures-related lectures was a bit confusing (despite Erik Meijer's obvious enthusiasm for the subject). Otherwise the course is a great introduction to a number of interesting topics in Scala, which will probably serve as an important stepping-stone for the next parallel programming course.

By Егор П

Aug 13, 2017

Course is very informative, but has a few "formatting" issues:

Fix references to another lectures. Sometimes they are talking about lectures that don't even exist

In one of the first weeks it was proved that Try is not a monad. And later in the last week video other lecturer call it a monad. It is not anything huge, but makes feeling that content a bit inaccurate.

Week 4 / Combinators on Future 1/2 / Future recap - flatMap result type is incorrect

By Martin O

Nov 03, 2017

The course material and assignments did not quite match. Moreover, the test assignment was like something for completely another course. Not even a word about possible ways to implement test assignment methods. Had to browse around course forums and browse around the Internet for additional materials about Scala and algorithms. Although in the end got 10/10 points - no idea whether same result could be achieved in some even more elegant way.