Chevron Left
Back to Functional Programming Principles in Scala

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

8,231 ratings

About the Course

Functional programming is becoming increasingly widespread in industry. This trend is driven by the adoption of Scala as the main programming language for many applications. Scala fuses functional and object-oriented programming in a practical package. It interoperates seamlessly with both Java and Javascript. Scala is the implementation language of many important frameworks, including Apache Spark, Kafka, and Akka. It provides the core infrastructure for sites such as Twitter, Netflix, Zalando, and also Coursera. In this course, you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks, such as modeling business domains or implementing business logic. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically. The course is hands-on; most units introduce short programs that serve as illustrations of important concepts and invite you to play with them, modifying and improving them. The course is complemented by a series of programming projects as homework assignments. Recommended background: You should have at least one year of 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 background in mathematics (e.g., algebra, logic, proof by induction). Last, you should have some familiarity with using the command line....

Top reviews


Sep 23, 2019

As expected Martin is awesome in explaining principle of functional programming. I have started reading the book as well to make sure I keep up with the knowledge which I have gained from this course.


Sep 13, 2018

It took me much longer than expected to finish the course and sometimes it made me feel stupid and helpless. Diving into functional programming was a mind bending experience, totally worth time spent!

Filter by:

1 - 25 of 1,611 Reviews for Functional Programming Principles in Scala

By Serg D

Apr 10, 2020

I am sorry to give this mark, guys. But I am a little disappointed

To start with I spent more than a week installing the programs. Yep, more than a week. there are several programs to install and it has to be done in a very specific way. The tutorial videos go like these are the steps to install the programs, but we will not follow them, because we have these programs installed.

For example you cannot install programs to Program files folder. Why? You needed to know the difference between system and user variables. Even project submission was tricky. I could only submit the projects from sbt shell. Why?

There was no help and support with these basic steps. That spoiled the whole experience.

The course was well structured, but had too much mathematical and programming theory. Most of the time we saw formulas and code, but I could not learn from this how to write a basic program.

The complexity increased very quickly and I could not focus on the lecture material at all, just found it too distant from the practice.

My last point is about examples. Examples that were included in the course were (i am not exaggerating here): pascals triangle, peano numbers, Queens positioning on chessboard, anagrams, huffman numbers, phone mnemonics.

Really? Could there be any real world examples? Is this what the people in the university of Lauzanne get paid for, to write a code how to decipher anagrams at work?

Cancelled the subscription as a result.

By Daniel

Jan 17, 2017

As a Java programmer with some 18 years industry experience I quickly got lost on this course. It might not be the course - it could be me! It might be that I am too long in the tooth as an OO programmer that I cannot cope with the transition to functional programming.

I found the video lectures initially well structured and stepped nicely in to increasing complexity without losing me. But eventually I fell completely behind and by the time I was performing the exercise 2 submission I was in deep water. There are a lot of mathematical theory and programming theory references along the way as well which I did not like.

As a real world programmer I have never really felt compelled to know peano number theory. And I struggle to understand how performing this exercise prepares me for real-world Scala programming either. I just do not see the point of creating code that can add and subtract numbers without using number types!!! I could write a wrapper for Int in Java in 2 minutes. Doing this abstract Scala exercise would take me all day and I still do not understand the code nor the point of doing it! Whatever happened to maintainability principles ?

I have now lost all interest in completing the course because by week 3 I might as well be doing a course in advanced Arabic. I cannot continue this course now because I cannot complete the exercises. I am disheartened and not sure whether this is a reflection of Scala or the course or both. I would be reticent to take a job with Scala.

By Bjoern R

Feb 7, 2020

Not all people of high skill can teach their knowledge well. This is one of those instances. Exercises introduce concepts that have not been covered in the lectures. Lectures and exercises are often disjoint. There constant bombardment with concepts from computer science and mathematics, which I normally not mind, but I want to learn Scala here and only Scala. All this does is increase the complexity and time consumption without helping me learning the language itself. I pushed myself through by learning with resources outside this course. As they could teach me the same concepts in 1/10 the amount of time.

By Jerome F

Feb 17, 2018

I wouldn't recomand this course to someone who wish to learn scala. Some explanations and exercices are quite hard and not suitable for a beginner. I had sometimes the feeling that what was asked in the exercices was not seen in the videos or very briefly. I'm a little bit disapointed.


Apr 6, 2018

Very poorly structured course.

Scala syntax does not explained well in videos, and rely on you reading a book and other resources.

Practice assignment rely on a knowledge outside of previously explained topics, like advanced algorithms, that you simply will not have beforehand (you came here to learn Scala, not algorithms).

Videos are short and useless, i saw more educational videos about wood screws than course video about tail recursion.

And about recursion video: it is explain "what" recursion is, but not explain "why?" you need it.

By Vladimir P

Sep 14, 2018

It took me much longer than expected to finish the course and sometimes it made me feel stupid and helpless. Diving into functional programming was a mind bending experience, totally worth time spent!

By Matteo S

Apr 5, 2018

This is too focused on algos rather than Scala and functional programming.

A lot of time is spent figuring out how to solve a problem, rather than learning functional programming or Scala.

By Scott L

Jun 4, 2016

I am a statistician who works primarily with R, with some Python for the things Python is better for. I know how to program, but I explicitly note I am not a computer science student. I have only limited experience with the command prompt. I was very excited when I heard about this course, but the amount of work and frustration just to get started programming in Scala has been obscene. I am very, very glad I decided to check out the course for free before paying for the specialization.

The course has a lot of required software. The tutorials to get this software often involve "You need this, but so save time we're going to skip showing you how to get it. If it doesn't work, you need to install it." There is a lot of variability in OSs. Many errors are often encountered. There is no help.

Among the things the course requires are two (three?) IDEs for Scala (I note the video tutorials says you just need some sort of IDE... but you need IntelliJ, and Eclipse to submit...). The guides show how to get started on a Mac. The software is not the same on Windows, and so 'step by step instructions' become a guessing game, because many options or menus are missing or different.

There are many better and more friendly guides on the internet. I may return to the transcripts of the course content here, but I won't be submitting any coursework. I'm going to warn my colleagues away as well. Forget Coursera - I'll just buy a book and work through it like everyone else I know.

By Patrick K

Feb 20, 2018

Videos all use old versions of scala/sbt/java/intelliJ. Dependencies only work on some versions of scala. Too much work to just get dev environment setup.

By Yves-Michel L

Nov 16, 2016

Bad logic.

Class content poorly related to the exams. No exercise for practice. When any, clearly unrelevant. The first 4 weeks, it is hard to impossible to succeed through the exam. Run all videos set first, then consider digging into practice.

I took a book and learned more form it than this video.

By Rishabh A

Jun 11, 2018

Worst course. Even the first step for IDE is not explain properly

By Eduardo

Jul 16, 2017

The problems are quite complex and focus more on algorithm development than in Scala. I come from a Python background and problems are quite difficult regardless of the language used. I have lost focus in Scala sometimes during the course.

By Thiago M d O

Oct 1, 2020

Not the best way to start in Scala. Course content is a bit outdated, and relies heavily on algorithms to teach, which is not something expected when someone is trying to learn a new language. It has some good lectures, but it is definitely not a beginners course. I won't continue the specialisation, as there are better ways to learn. Even Odersky's book is more polished and more up to date.

By Pierre-Yves D

Jan 7, 2020

Setting up the environment may be part of the job but you really need to work on that part because many people won't even be able to compile and submit a single assignment.

By Thomas S

Oct 11, 2018

Myself and a senior software engineer in my team are unable to get the example assignment to compile, this may be due to the version of sbt being so old that things are falling apart. Asides from that the videos are informative but i am now using a different resource to practice.

By Richard B

Jan 9, 2020

The exercises are much more difficult than the content describes. You'll watch several hours of lectures then the exercise will require new syntax and concepts that weren't covered. The course is good if you just look at the lectures and forget about the assignments.

By Brennan W

Jan 31, 2017

I wish the teachers would go more into how to come up with solutions to the functional problems.

By Jeffrey K

Mar 26, 2017

Not very practical.

By Tom Y

Dec 27, 2018

The course was quite good all in all, and even though I'm already experienced with many of the aspects involved in software engineering in general and in functional programming in particular, I've followed it with much interest and gained some new perspectives. And it's been a great introduction to Scala (a language I had not written code in before).

The teaching is very good! Prof Odersky's explanations are very clear and go into the right level of detail, and the exercises and assignments are interesting and seem to be well thought out.

I personally would have liked the course to be deeper, both in explaining functional programming (e.g. the monad pattern) and in covering more advanced features of Scala (e.g. the less trivial parts of the type system), but I guess the given course is OK as an introduction and I can also go look for the stuff I'm missing in other courses and/or outside Coursera.

Two minor things that damaged the experience to a little extent and which I would recommend to improve for the future: 1. The technical introduction was good enough to get me started, but did not cover some problematic aspects which had me stuck for a long while (it was also very difficult to solve by googling, and a colleague of mine - who's also taking the course - ended up solving it by chance). Specifically I'm talking about worksheets not working properly unless created within a package directory, and for some things unless set to a certain mode of execution (non-REPL). Disclosure: I haven't looked for solutions in the course forums; it's possible that this was asked and answered, or that I could have asked and gotten an answer there. 2. The videos were poorly edited: some bits repeated, some clips were obviously recorded for a specific week number but then given in another week, some parts had obviously been there originally (and other parts referred to them) but then they didn't make the final cut... It's a pity that an otherwise very well made course suffers from such small technical problems, which, while not too grave, cause confusion and increase the mental load the learner has to cope with - which is already laden with challenging stuff - with such non-important and easily avoidable distractions.

Thank you!

By Dennis S

Dec 23, 2018

The name creates the false impression that the course is about functional programming. This is certainly not the case. It touches the topic during the first and second week, but covers only some basics. Afterwards it is really a Scala course with the regular Scala focus on objects and the later weeks also facilitate imperative programming which is fine, but not good for teaching functional programming.

The Exercises seem to target computer science students and neither beginners nor programmers that want to learn functional programming. This is unfortunate and the course could be better regarding that.

By Alberto S

May 24, 2020

Presentation: instructor reads the presentation, adding no value to it other than a few words, scribbles, and obvious comments about what you just can read yourself. This slows down the progress.

Required Level: sometimes lectures feel more math theory than functional programming. This is distracting and serves no purpose. I wonder how people without math background would do if they have to learn / refresh what peano axioms are, how to implement huffman encoding algorithm while learning a fresh new language, etc. There's a reason why the first piece of code in every new language is the Hello World. As someone proficient in several development languages, I always learn the algorithm first, and then look for the implementation.

Parallelism: the course fails to establish a parallelism with OO languages in the relevant aspects, so people coming from other languages like Java and C# can really understand what's different in functional programming. There are shallow references when talking about primitives or classes and objects, but nothing serious. I wonder why the course requires proficiency in a previous development language if this wasn't the purpose.


Dec 8, 2019

One of the very few courses and Specialization that I highly recommend simply because of the number of materials covered in the best quality possible by the instructor. It's simply an amazing course.

By Pere M

Jan 6, 2019

Really well explained, with thoughtful examples and labs that make your brain actually comprehend all the lessons.

By Hardik M

Dec 19, 2019

the course content was not up to the mark and the way course is designed as well as the explanation videos are quite boring and monotonous in nature.