Set Reminder Save for later

Functional Program Design in Scala

This course is a part of Functional Programming in Scala, a 5-course Specialization series from Coursera.

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:

Get Details and Enroll Now

OpenCourser is an affiliate partner of Coursera.

Get a Reminder

Not ready to enroll yet? We'll send you an email reminder for this course

Send to:



École polytechnique fédérale de Lausanne

Rating 4.1 based on 404 ratings
Length 5 weeks
Starts Feb 11 (10 weeks ago)
Cost $79
From École polytechnique fédérale de Lausanne via Coursera
Instructor Martin Odersky
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Software Development

Get a Reminder

Get an email reminder about this course

Send to:

What people are saying

We analyzed reviews for this course to surface learners' thoughts about it

last week in 18 reviews

The planned content is great but the last week goes too fast and the last part about Future is very inadequate to understand Futures well.

A very good introduction to scala and functional programming Last week is awful.

On the last week was some videos disconnected (talking about Scala Futures) with the rest of the course.

And later in the last week video other lecturer call it a monad.

Good course, not a greatly structured as the first one though, especially the last week.

It is a pity that one week has no assessment at all and the last week mostly on "Futures" does not assess them.

The last week about reactive programming was a little hamfisted, though.

The last week has materials that nothing related to assignment, and it jumps a bit fast where i have no clue at all I really enjoyed this course.

principles in scala in 14 reviews

As a continuation from the previous course, "Function Programming Principles in Scala", I found this less focused -- especially with respect to the title.

This course is intended to be taken after Functional Programming Principles in Scala.

Mostly as good as the course "Functional Programming Principles in Scala" I took couple of years ago.

This course is a re-hash of both the excellent "Functional Programming Principles in Scala" and the mediocre "Principles of Reactive Programming in Scala".

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

Sad that it is at the same time as the Functional Programming Principles in Scala, which is clearly a pre-requisite.

Most of the content was included in Functional Programming in Scala and Reactive Programming Principles in Scala.

functional programming principles in 12 reviews

It's a good follow-up to "Functional Programming Principles in Scala" Fantastic course.

The course starts well and has really good exercises, HOWEVER at weeks 3-4 the lectures lose their logical order, it feels like a collection of random lectures from other course syllabus that have been "reused" here.Week 3 exercise has very little to do with the lectures, and week 4 lectures are even worse, martin says he'll talk about 1 thing that is later not in the course, then we switch to someone else that talks about "things we've seen before" - which we haven't!Don't get me wrong, you can still learn a lot from this and understand most of it, but it just feels very unprofessional, glad I've only audited this course and didn't pay for it, if that was the case I would feel very disappointed I wish the same instructor did all the lectures This course is OK as a successor of "Functional Programming Principles in Scala".

Course "Functional Programming Principles in Scala" was much better Overall, the course is great.

Last week passes by the subjects superficially A sharp decline in quality and cohesion from the Functional Programming Principles in Scala course.

I took it after Functional Programming Principles in Scala.

Still can learn a lot after reading fpins 新奇,使用,精简,理论! Too much of the content is already contained in the courses "Functional Programming Principles in Scala" and "Principles of Reactive Programming".

I was expecting this course to be more challenging than Functional Programming Principles in Scala but found this one easier in the end.

I'd give 5/5, but there are parts that seem to be missing -- lecturers refer to videos that aren't part of the course (or the previous one: Functional Programming Principles in Scala).

martin odersky in 11 reviews

The part by Martin Odersky was excellent, the other guy was kind of all over the place and a bit annoying.

I'd like to see lectures on concurrency by Martin Odersky sometime in the future.

Martin Odersky's lectures are excellent as always.

Thanks to Martin Odersky The presented material wasn't coherent for me, I didn't walk away with knowledge of functional design principles for larger/complex software.

To me every mooc by Martin Odersky is pure gold.

Gracias Martin Odersky por inventar scala.

Course material looked sometimes recycled and unstructered Great course to have a pratical introduction to functional design using Scala Exceptionally great teaching by Professor Martin Odersky, I am right now wondering why his scala.react way of Signals approach is not adopted by any of the major UI platforms ... it makes lot of sense to me having worked in UI layer for a long time and understanding the mess that event driven architecture brings Another great course.

The course in general is not as good as Martin Odersky's first course, but it still has interesting bits to learn about functional programming.

erik meijer in 8 reviews

The lectures were quite interesting, especially the first two weeks and the ones by Erik Meijer.

Also I felt that the exercises were missing the point of the lectures.The lectures by Erik Meijer felt out of place and poorly connected to the previous content.

nice course week 4 course "timely effects" with Erik Meijer videos are very hard o watch, the background and the slides are very distracting.

Manner of teaching of Erik Meijer is really annoying.

A well-paced and intellectually challenging introduction to the concepts and practice of functional reactive programming, with two AMAZING instructors (Martin Odersky and Erik Meijer)!

The video's from Erik Meijer in week 4 seemed a bit artificial.

Also, the mish-mash of Futures-related lectures was a bit confusing (despite Erik Meijer's obvious enthusiasm for the subject).

Fantastic coruse by Martin Odersky and Erik Meijer.

years ago in 5 reviews

I did the FP in Scala course a few years ago and decided to do the full certification now.

This almost made me feel like I was back in college, with those unbelievably boring lessons and project subjects from 30 years ago.

I remember those classes I attended several years ago when I was struggling with learning Java, compare with that bad experience I could learn Scala just in 4 weeks much obliged to you Dr. Odersky and your colleagues that make learning process to be a breeze.

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.


An overview of related careers and their average salaries in the US. Bars indicate income percentile.

Web Developer and Programmer $89k

Business Programmer/Developer $91k

IT/Web Developer/Programmer $93k

Developer - Java/Scala $93k

Developer and Programmer $98k

Programmer Analyst/ Developer $100k

Programmer & Application Developer $105k

Software Developer/Programmer $107k

.NET Developer / Programmer $108k

Programmer/BI Developer $111k

Senior Developer/Programmer $121k

Senior Programmer Developer $124k

Write a review

Your opinion matters. Tell us what you think.



École polytechnique fédérale de Lausanne

Rating 4.1 based on 404 ratings
Length 5 weeks
Starts Feb 11 (10 weeks ago)
Cost $79
From École polytechnique fédérale de Lausanne via Coursera
Instructor Martin Odersky
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Software Development

Similar Courses

Sorted by relevance

Like this course?

Here's what to do next:

  • Save this course for later
  • Get more details from the course provider
  • Enroll in this course
Enroll Now