To support our site, Class Central may be compensated by some course providers.

Functional Program Design in Scala

École Polytechnique Fédérale de Lausanne via Coursera

students interested
  • Provider Coursera
  • $ Cost Free Online Course (Audit)
  • Session Upcoming
  • Language English
  • Certificate Paid Certificate Available
  • Effort 5-7 hours a week
  • Start Date
  • Duration 4 weeks long

Taken this course? Share your experience with other students. Write review

Sign up to Coursera courses for free Learn how

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: https://www.coursera.org/learn/progfun1.

Taught by

Martin Odersky, Erik Meijer and Roland Kuhn

Related Courses

Reviews for Coursera's Functional Program Design in Scala
4.6 Based on 38 reviews

  • 5 stars 71%
  • 4 stars 21%
  • 3 stars 8%
  • 2 star 0%
  • 1 star 0%

Did you take this course? Share your experience with other students.

Write a review
  • 1
Anonymous
5.0 4 years ago
Anonymous completed this course.
Heed the warnings that you must be an experienced Scala programmer to do well in this class (I am a very experienced imperative programmer in several languages). I took the "beginning" class, but even that was challenging and I didn't complete the later assignments (I did complete them after the class ended). The lectures only cover the basics, but the assignments go into details and do cover the essentials quite well. The best resource was the "Reactive Cheat Sheet" that was mainly put together by advanced students (thank you, thank you). Even then, I didn't complete any o…
1 person found
this review helpful
Was this review helpful to you? Yes
Mark W
4.0 4 years ago
Mark partially completed this course.
This course is the follow-up to the same institution’s FP/Scala course. As before the presentation is great and the problems are hard. I ended up getting derailed by the second homework assignment, though. It involved a simulation of a circuit. Circuits might be common knowledge to Prof Oderskey, but I would have had an easier time modeling something I was more familiar with.
1 person found
this review helpful
Was this review helpful to you? Yes
Anonymous
4.0 4 years ago
Anonymous completed this course.
Not yet finished and not as good as "Introduction to Functional Programming in Scala" by Odersky, this course is anyway well done, explanations are generally clear and content is challenging but well presented. The only negative point is that the test rater does not provide clear feedback. It has been told that it's up to the student to write his own tests.. maybe a side course on scalatest and scalaunit would be a good idea for thise who do not have experience. And even in this case, if I fail a test and do not know why the feedback is not that useful.
Was this review helpful to you? Yes
Antoine H
5.0 3 years ago
by Antoine completed this course, spending 20 hours a week on it and found the course difficulty to be hard.
The "simple, yet rigorous" teaching methodology prevalent at the EPFL is once more at work. Is it time for you too to get acquainted with asynchronous and distributed systems in a more systematic way? Let's call it Reactive. Functional ReactiveProgramming. Reactive Streams. Reactive design patterns through the Akka actor library.

The challenge is real - and the results follow the principle "the greater the challenge, the greater the reward".
Was this review helpful to you? Yes
Johan R
4.0 2 years ago
by Johan completed this course, spending 10 hours a week on it and found the course difficulty to be medium.
Slightly disorganized course. Very good though. Maybe the subject is just broad. There are multiple presenters. Anyways, I do recommend it and I did finish it which I would not have done if it was not good enough (for me).
Was this review helpful to you? Yes
Anonymous
3.0 2 years ago
Anonymous completed this course.
The course started well, but I would have added 2 more weeks to the existing 4 weeks. There was a lot more that they could have covered, especially with regards to reactive programming.
Was this review helpful to you? Yes
Anonymous
3.0 2 years ago
Anonymous completed this course.
The course started well, but I would have added 2 more weeks to the existing 4 weeks. There was a lot more that they could have covered, especially with regards to reactive programming.
Was this review helpful to you? Yes
Anonymous
5.0 4 years ago
Laurence completed this course.
I really enjoyed working myself through this class exploring concurrent reactive techniques using the Scala language. "It's hitting two flies with one blow"
Was this review helpful to you? Yes
Anonymous
5.0 4 years ago
Anonymous completed this course.
This is an excellent class, however, it covers advanced material. A certain amount of tenacity is required to finish it.
Was this review helpful to you? Yes
Anonymous
5.0 4 years ago
Anonymous completed this course.
Challenging but intesting course. It's a good follow-up to "Functional Programming Principles in Scala"
Was this review helpful to you? Yes
Anonymous
5.0 4 years ago
Anonymous completed this course.
Fantastic course. If you want to learn more about modern programming concepts you should take it.
Was this review helpful to you? Yes
Anonymous
5.0 4 years ago
Anonymous completed this course.
Challenging but satisfactory, mind opening. Really worth the time and effort.
Was this review helpful to you? Yes
Anonymous
5.0 4 years ago
Anonymous completed this course.
Challenging, but with lots of "Aha" moments and a sense of accomplishment
Was this review helpful to you? Yes
Mirko F
5.0 3 years ago
by Mirko partially completed this course.
Was this review helpful to you? Yes
Wang E
5.0 2 years ago
by Wang partially completed this course.
Was this review helpful to you? Yes
Mark B
5.0 2 years ago
by Mark completed this course.
Was this review helpful to you? Yes
Marco R
3.0 2 years ago
by Marco completed this course.
Was this review helpful to you? Yes
Ivan V
5.0 3 years ago
Ivan completed this course.
Was this review helpful to you? Yes
Chris C
5.0 a year ago
by Chris completed this course.
Was this review helpful to you? Yes
Chema C
5.0 2 years ago
by Chema completed this course.
Was this review helpful to you? Yes
  • 1

Class Central

Get personalized course recommendations, track subjects and courses with reminders, and more.