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: Event-Driven Programming
Status: Performance Tuning
IntermediateCourse35 hours

Featured reviews

JM

4.0Reviewed Feb 18, 2019

There's a lot to chew on here, and it's well-articulated. Some of the examples are a bit opaque and academic - a little more of a practical, intuitive approach would go a long way.

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!

CP

4.0Reviewed Jun 27, 2016

Maybe an unfair comparison but I am comparing this with the principles of reactive programming. That had much more contents such as actors, etc. Having said that this is a good course by itself.

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.

NG

5.0Reviewed Jul 30, 2016

This was just a great continuation of a great beginning after the previous course.I hope that in the future Martin Odersky will publish more courses.Thank you !

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.

CU

5.0Reviewed Jun 13, 2018

This is a great course for guiding further study. Lots of the topics require outside material to really feel like you've got a minimal handle on the larger designs it's teaching.

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

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.

SB

5.0Reviewed Sep 16, 2020

Awesome course. All assignments except the last one are super difficult. Maybe the assignments could be made a little simpler by providing some more hints.

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