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

4.5
stars
3,132 ratings

About the Course

In this course you will learn how to apply the functional programming style in the design of larger Scala 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. Finally, you will learn how to leverage the ability of the compiler to infer values from types. 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. 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 with using the command line. This course is intended to be taken after Functional Programming Principles in Scala: https://www.coursera.org/learn/progfun1....

Top reviews

RP

Sep 14, 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!

ES

Mar 17, 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:

26 - 50 of 514 Reviews for Functional Program Design in Scala

By Kyungnae L

Aug 30, 2016

Several courses have been combined. Content is not updated. Now is 2016.

By Damien G

Jun 10, 2016

Not very interesting

By Bogdan F

Jun 22, 2020

Курс значительно слабее первого, после 2 недели начинается хаотичная нарезка лекция.

By Remko d J

May 27, 2016

Too much reuse of old material (assignments as well as lectures).

By Lidan Y

Jun 17, 2018

strange structure

By Roberts P

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!

By Harish Y

Jul 24, 2016

Really enjoyed doing the course. Learned a ton of Stuff. Functional programming design is amazing. It's like learning Object Oriented programming (with design patterns) for the first time.

By Botao A

Jun 22, 2020

The 'implicit' and 'type class' part has no video which makes the learning process more difficult.

By Milan V

Oct 24, 2019

The 2nd part was kind of confusing and less concise.

By Michael J A

Jun 18, 2016

If you're new to Scala and/or functional programming, then the material covered here will be very valuable.

However, I was fairly disappointed. Much of the coursework was pulled from the original "Functional Programming in Scala" course, as well as the "Principles of Reactive Programming" course. Indeed, there are references to material from those courses that are not actually included here, which must be a little confusing for anyone who hasn't taken those courses. The first two assignments came, respectively, from those two courses also.

There wasn't as much emphasis on architecting a functional program as I might have expected from the title. Instead, the course focused more on using functional principles when implementing computations. The coverage of functional reactive programming (FRP) was very good, but again, I would have expected more of a 30,000ft overview of how to design an application using FRP.

In short, I felt this course to be a little incoherent and disjointed.

By Michael R

Oct 23, 2019

This course was a bit of a mixed bag - some great bits and some really badly designed bits!

Seems it was originally two courses which have been mashed together, and the joins are pretty rough...

First week on Streams/Lazy Lists was great, but seemed to actually have originally been the final week of the functional programming principles course.

The circuits example was interesting, but could have done with an assignment to bed in the knowledge - the actual assignment had little bearing on this material.

The futures section was interesting, but there appeared to be some missing sections due to the course reorganisation, so it didn't flow especially well. Again, some more concrete examples and an associated assignment would have been appreciated.

Definitely a useful course, but be prepared to put up with the rough edges!

By Isaac L

Nov 6, 2016

The content was pretty good, but I'm annoyed that I paid for a disjointed collection of videos that were previously available for free. This is just a pared down (worse) version of an older class, "Principles of Reactive Programming", which I started but didn't finish three years ago. The videos and assignments are the same, but some of them have been removed, so there are confusing discontinuities. Some of the videos refer to a "next lecture" or "previous lecture", which isn't included in this class. The last week of the class should have been split across multiple weeks, and I'm disappointed I never got to do an assignment on latency or futures.

That being said, I'd still recommend taking any class taught by Odersky, and I learned a fair amount.

By U C

Sep 4, 2019

A bit of confusion about the assignment instruction.

By Andrés F

Jul 16, 2016

This course is a re-hash of both the excellent "Functional Programming Principles in Scala" and the mediocre "Principles of Reactive Programming in Scala". Unfortunately, in quality it's closer to the latter: mixed quality, lectures that seem unrelated to their corresponding assignments, many errors (both typos and, more seriously, examples that don't type-check!) and a general lack of an in-depth motivation for the principles. Staff participation in my run of the course (2016) was disappointingly low; in some cases there was no response at all to students pointing out glaring errors in the lectures.

It's very noticeable that this course is a patchwork of previous courses. In same cases the video lectures even display the wrong title for the course, or mention lectures that no longer exist in this version of the course!

The course has interesting parts (I was especially thrilled when I saw there were lectures about FRP), but its quality is way below "Functional Programming Principles in Scala". I'm disappointed.

To make this review constructive, my recommendations:

1- Pay attention to quality. Make sure all examples compile and type-check.

2- Make sure you're not repeating content already in other courses, especially if they are part of the same specialization!

3- If you're going to re-use content from other contents, make sure it fits the current course. Do not mention lectures not in the course.

By Z

Sep 3, 2016

I expected more. Week 2 on streams in my opinion was a very strong week and well worth time and effort. Week 1, 2 and 3 were pretty weak in my opinion. I don't feel like I've learned much or that the exercises reflected what was being taught in the lectures. For example on week 4 the exercises do nothing with futures even though there's 6 lectures on them. Week 3 spends 3 long lectures how to build a discrete simulation application and exercises are about property checking. Course felt disjointed and not really finished. Would NOT recommend and definitely would not pay 79 USD for.

By Ibrahim M

Jun 25, 2020

For the content of last 3 weeks, I struggled through some of them, I found some of them quite irrelevant, therefore I had to catch a lot of ideas from all over the internet, I thought it was just me until I saw other reviews about the course, obviously, this version of the course is different from the original one, some content was removed, glued, or out of order.

By Peregrine D

Jun 17, 2020

As other reviews have indicated, this course is a mish-mash and a big disappointment after the 5* progfun1 course.

By Jinliang F

Aug 17, 2020

The assignment did not sever the purpose to enhance what had been taught in the videos.

By Michael P

May 20, 2018

Inconsistent!

By Илья Б

Sep 24, 2016

At times instructions for problems are really vague. Every method should have comments or be test covered like it was in the first course. For example I had to spend some time, looking through the parser to discover that spaces in calculator expressions are mandatory. Technically it was in the description, but it was not clear at all and I was stuck with the idea that I'm doing something generally wrong so i had to write a whole test(that was kinda ad-hoc and not a good practice at all) to reach that tiny problem. Otherwise the course is really really great. It made me progress a lot in my scala skill, while keeping me interested in the problems and learning some new data structs ect. Keep up the good work!

By Rishi K

Aug 10, 2016

Functional Program Design in Scala is one of the best courses for those who want to apply the functional programming style in the design of larger applications using functional programming concepts. This course is intended to be taken after Functional Programming Principles in Scala. It is a great course for those who want to explore into the functional programming aspect of Computer Science. The concepts are explained lucidly and the assignments are relatively difficult and help the individuals to apply the learnt concepts in an incremental manner. I was really excited on taking this course, and it has lived up to all my expectations from it.

By Pedro d S Q

Aug 19, 2020

Martin Odersky has a beautiful, calming, sweet voice, that is able to entertain and guide the student even through the most difficult concepts. He has a great way of explaining, his setup is very good and the classes are well thought. The exercises consist of a handout with some bits already coded, and you have to implement some functions to make it all work. This is the second course of five, and I liked this one as much as I liked the first. I really like that the handouts have a "real code" feel to it. The exercises are really well designed, and help the student practice testing skills too, introducing early scala's testing framework.

By Owen E

Sep 10, 2018

I think the exercises were a bit easier than the first component of the functional programming in Scala series, I did enjoy the difficulty of the first component. My least favorite part was the lecture videos on Futures in Week 4. The presenter is fine, but the style in which he is teaching is different from Martin's. Students often need to adapt to someone's teaching style, and I'm not sure if it's worth taking the time to developing a strategy for those ~ 30 minutes of lectures in week 4.

Anyway, I am enjoying the course so far. Thank you so much for providing this content to the public! You're heroes!

By Tom H

Jul 31, 2016

This course sets out to teach from the ground up about various functional programming techniques and their uses. It manages to do just that in a very short time. The ideas are presented in Scala but apply just as well to most other languages. The last week, on functional reactive programming and asynchronous programming in particular can easily be transposed to modern front-end web development. The assignments are also interesting and well balanced.

I was familiar with most of the ideas, but this course gave me a better understanding of these.

I thoroughly enjoyed the experience.

By Josh S

Oct 31, 2018

Great opportunity to learn from some of the "rock stars" of comp-sci! The course builds on the concepts taught in first part of the series by careful illustration of their application to larger programming structures. The results are elegant expressions that convey the full intention of the programmer in a simple and concise manner, boldly declaring: "I am the solution to this problem." Really surprised in week 4 when Erik Meijer made an appearance as guest lecturer! Not only do you get to learn from Scala's architect, but from LINQ's as well.