Skip to content
CourseraScalaFree courseBeginner levelCertificate

Functional Program Design in Scala

Created by: Martin Odersky

icon
Quality Score

Content Quality
/
Video Quality
/
Qualified Instructor
/
Course Pace
/
Course Depth & Coverage
/

Overall Score : 82 / 100

icon
Course Description

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 mods. 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 altertives 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.

icon
Instructor Details

placeholder

Martin Odersky is a professor at EPFL in Lausanne, Switzerland. He has been working on programming languages for most of his career. He first studied structured and object-oriented programming as a PhD student of Niklaus Wirth, then fell in love with functional programming while working as a post doc at IBM and Yale. When Java came out, he started to add functional programming constructs to the new platform. This led to Pizza and GJ and eventually to Java 5 with generics. During that time he also developed javac, the current reference compiler for Java. Over the last 10 years, Martin worked on unifying object-oriented and functional programming in the Scala language.

icon
More courses by Martin Odersky

Free

icon
Reviews

4.1

437 reviews in total

Select a bar to show only those reviews.Select the bar again to show every rating.

By Roman A on 13-Nov-19

The course covers a range of interesting and important topics and the quality of lectures and exercises is pretty high.However, it is organized in a less coherent way than the first course in the specialization. Exercises do not match their weeks, lecturer suddenly changes in Week 4 and delivers something not clearly following from the previous lectures.

By David S on 30-Oct-19

This is a great course with a clear exposition of some of the more complex topics in FP such as Monads. However, I feel the treatment of concurrency left me with more questions than answers (though I also understand the next course will explore it in more detail). I would have also liked some more excercises about building a Scala program "from scratch".

By Ivan P on 27-Oct-19

The first week is simply useless :(

By Milan V on 24-Oct-19

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

By Michael R on 23-Oct-19

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 Ishan on 22-Oct-19

Assignments 3 and 4 can be improved. They are a bit hard to get started with and at the end only require a handful of lines of code to implement. It does not match the learning outcome of the difficult topics taught in the lectures.

By Pedro C P P on 21-Oct-19

A little less content than the first course.Also the videos and materials of the second professor are way worst than the first one.

By Gabriele A on 1-Oct-19

Good course but not much coherence between lessons and exercises.

By Alexey P on 6-Sep-19

The topic very interesting as well as course assignments. But not so good as progfun1. It looks like some topics were thrown away. E.g. quick check assignment is not in a right place. Assignment about Streams is too complicated and does not illustrate streams well. There is not enough information about design - e.g. more patterns and guidance when to use mutable state with oop princilpes and when to use fp.

By Shi Y on 4-Sep-19

A bit of confusion about the assignment instruction.

By JoaquĆ­n D R on 4-Sep-19

Too short, In my opinion i would spend more time on future and async.I dont like too much, when the teacher changes..

By Daniel B on 2-Sep-19

Good course with a lot of useful material though not quite as polished as the first one

Showing 12 of 437 reviews