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

7,707 ratings
1,568 reviews

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, Tumblr 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 programming projects as homework assignments. 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....

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,504 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.

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 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 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 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 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!


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 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 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 Rishabh A

Jun 11, 2018

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

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 Pere M B

Jan 6, 2019

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

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 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 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.

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 Rajat K B

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 David F

Jan 14, 2019

The course in general is kind of theoretical. Some of the homeworks are fairly challenging. I found it a useful companion to the Programming in Scala book, which I'm working through at the moment.

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 Ahsan

Dec 6, 2018

It was very hard to follow the instructions.

By Adolfo E

Mar 11, 2018

The exercises are too hard in my opinion, which sometimes leads students to stuck with a problem instead of focusing on learning the basics of Scala and functional programming principles. I spent too much time to finish the course and I think that the amount of time spent would be enough to be earn more knowledge about functional programming by itself. Although my opinion about the exercises, the course is a good one which I would recommend to my colleagues. At least, if you finish this course it proves something about the student. That is to say that if someone finish this course it tells that the student don't give up when facing hard problems, and is a dedicated one.