Back to Functional Program Design in Scala
École Polytechnique Fédérale de Lausanne

Functional Program Design in Scala

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.

Status: Scala Programming
Status: Data Structures
IntermediateCourse35 hours

Featured reviews

HL

5.0Reviewed Mar 5, 2017

Great experience with the assignments. Took some time to get understand all the course materials. Highly recommended. Still can learn a lot after reading fpins

RP

5.0Reviewed 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

5.0Reviewed Feb 11, 2022

It is one of the best courses and one of the most informing of all of them. If you want to learn a new programming language paradigm, like functional, this course is perfect for you.

CR

5.0Reviewed Mar 17, 2021

i thought i knew scala at the time. but i had trouble putting the pieces together. this course really helped me understand how the various parts can be used together in practice.

BC

4.0Reviewed Apr 18, 2017

The introduction to functional reactive programming is well done. You go from the problem to the solution in a few lectures, and understand positive and negative aspects of the approach.

AD

5.0Reviewed Jul 2, 2021

Wonderful course by Martin Odersky himself. The content is awesome and the way Martin has explained the concepts in Scala 3 syntax and features is great. A course for every Scala developer.

SL

4.0Reviewed Oct 31, 2016

Great course. seems like some things that were referred to during some of the lectures were missing and kinda left you waiting for more. Hoping they will be completed in future courses.

MM

5.0Reviewed Jul 14, 2016

Picks up where the previous course left off... the last assignment is a bit more challenging than the others, well for me it was. Thanks to the people who put the course together.

VL

5.0Reviewed Sep 2, 2021

This course is quite difficult to me, especially the last section. I have to re-watch it so many time to fully understand. At the end of the day, it is worth the effort.

HY

5.0Reviewed Jul 23, 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.

EM

5.0Reviewed Oct 28, 2016

Interesting concepts analyzed in through functional and scala toolset. I enjoyed the homework variety and I think more than few things can be applied in real applications

ES

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

All reviews

Showing: 20 of 514

Abhinav Patil
2.0
Reviewed Dec 15, 2017
Leon L
5.0
Reviewed Aug 21, 2020
Shaul Engler
2.0
Reviewed Mar 1, 2018
Diego Mora Cespedes
1.0
Reviewed Oct 28, 2017
David Kaczynski
2.0
Reviewed Apr 26, 2017
Sergei G
2.0
Reviewed May 4, 2018
Alessandro Cinque
1.0
Reviewed Nov 8, 2020
Gabriel Guerra Costa
3.0
Reviewed Jan 8, 2019
Ilya Obshadko
1.0
Reviewed Jul 11, 2016
Sunheang Ty
1.0
Reviewed Nov 22, 2017
Jinqiang Zhang
5.0
Reviewed Jul 3, 2020
Abhay Dubey
5.0
Reviewed Jul 3, 2021
Martiniano Juanes
2.0
Reviewed Aug 29, 2019
Brendan McCollam
2.0
Reviewed Feb 16, 2019
Federico Lasa
2.0
Reviewed Jul 9, 2017
Gabor Szabo
2.0
Reviewed May 2, 2017
Giuseppe d'Alessio
2.0
Reviewed May 20, 2017
Henrique Costa
2.0
Reviewed May 6, 2017
Antti Aitio
2.0
Reviewed Jul 5, 2017
Subhojit Bhaumik
2.0
Reviewed Dec 26, 2017