Functional Programming Principles in Scala

This course is part of a Specialization (series of courses) called Functional Programming in Scala.

Functional programming is becoming increasingly widespread in industry. This trend is driven by the adoption of Scala as the main programming language for many applications. Scala fuses functional and object-oriented programming in a practical package. It interoperates seamlessly with both Java and Javascript. Scala is the implementation language of many important frameworks, including Apache Spark, Kafka, and Akka. It provides the core infrastructure for sites such as Twitter, Tumblr and also Coursera.

In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically.

The course is hands on; most units introduce short programs that serve as illustrations of important concepts and invite you to play with them, modifying and improving them. The course is complemented by a series programming projects as homework assignments.

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.

Get Details Enroll Now

OpenCourser is an affiliate partner of Coursera.



École polytechnique fédérale de Lausanne

Rating 4.7 based on 1,100 ratings
Length 7 weeks
Effort 5 hours / week
Starts Nov 19 (4 weeks ago)
Cost $79
From École polytechnique fédérale de Lausanne via Coursera
Instructor Martin Odersky
Free Limited Content
Language English
Subjects Programming
Tags Computer Science Software Development

Create an Alert

Not ready to take this course yet? Sign up for a one-time email reminder with a link to this course.

What people are saying

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

functional programming in 292 reviews

This was my first attempt at learning functional programming after having spent the past 13 years doing OO programming and the 3 years before that doing procedural programming and it was much more challenging than I expected.

While the course assumes little prior knowledge of programming, I feel only people with some experience in functional programming will feel at home attempting the problems.

I struggled on this course, Functional Programming is quite a paradigm shift for me - really glad I made the effort.

This was probably the hardest course I've ever taken, provided that it was my first attempt learning functional programming.

The assignments are so much fun and professor Odersky really explained all the functional programming concepts well!

Very important to anyone who is using the language and to understand the power of functional programming- this is the place.

I would not recommend this course for someone that has no experience in functional programming concepts such as recursion.

But it's also one in which you learn a great deal, especially if it's your first exposure to functional programming.

highly recommended in 14 reviews

Highly recommended.

This prof is godly Awesome class - highly recommended as an introduction to functional programming.

Highly recommended but again, not for beginner programmers as some of the concepts discussed are quite advanced.

Very good course, highly recommended.

Found it as an example of a top class form of material explanation, material itself is a nice preparation to a deep dive into functional world, highly recommended.

Highly recommended 10/10!

Fantastic course nonetheless, highly recommended.

Verdict: highly recommended.

computer science in 11 reviews

Excellent introduction to functional programming for people already familiar with the computer science field.

Afterwards it is really a Scala course with the regular Scala focus on objects and the later weeks also facilitate imperative programming which is fine, but not good for teaching functional programming.The Exercises seem to target computer science students and neither beginners nor programmers that want to learn functional programming.

Still you should already have some experience in software development or computer science to keep up.The exercises are also a good fit to the lectures and help you understanding the matter, while being very theoretical on the other side.I would do this course again.

Would highly recommend for anyone studying computer science or software engineering.

as an engineer with most of an undergrad computer science degree and a few years' industry experience, I found this paper consistently challenging but fair throughout.

Just make sure you have some basic knowledge related to Computer Science.

Without any background in Computer Science it might be hard to follow all the lectures.

It introduces the language of Scala and is a great course for those who want to explore into the functional programming aspect of Computer Science.

data structures in 9 reviews

Practices could be short and quick exercises, for instance, in data structures module a set of quick exercises for list (Given a unsorted list, sort it.

It was a bit difficult to switch from mutable data structures to immutable ones, and altogether I'm quite concerned with the performance tradeoff (which seems to be significant), but I like the brilliantly designed language syntax (even if it is extremely difficult to get used to).

I understand the effort is to understand the concepts and data structures, but this could be done in a nicer way too.

When I learned C++ I was presented similar data structures and algorithms that Professor Odersky used in his tutorial videos and exercises.

An amazingly deep dive for an intro course: covers generics, pattern matching, immutable data structures in lectures.

The assignments are a bit tough/abstract at first with the home-made data structures, but things get more grounded by the end.

Very good course love the way Martin has gone about covering the building blocks of Scala along with basic data structures.

It's not a beginner course, you need a solid understanding of recursion (which is all over the place), knowledge of some basic data structures might help too (e.g.

anyone interested in 9 reviews

讲课非常清楚,基本按照sicp前几章讲的。作业非常好能够引导思考,一定要弄清楚object in scala非常独特的概念。 Very nice course, anyone interested in the principles of functional programming (and Scala specifically of course) can benefit I learn a lot a lot about functional programming under what happens under the hood Very nice to learn the language from the designer himself.

I highly recommend the course for anyone interested in functional programming or scala.

Great class, I would absolutely recommend it to anyone interested in Scala!

I'd very much recommend this course to anyone interested on programming, as it teaches you, week by week, to think about your approach to a problem in a different and enlightening way.

Very difficult level, but a great challenge to anyone interested in functional programming Great course to start learning functional programming and scala Good material, but the lecture format was very dry and composed primarily of long videos.

This course was splitted in order to get more money, and we know it A fun adventure into functional programming in scala, I would recommend this course to anyone interested in programming in scala and functional programming in general.

Excellent course, must have for anyone interested in Scala !

Anyone interested should see Martin Odersky's YouTube talk "Working Hard to Keep It Simple."

way of thinking in 8 reviews

Functional programming really is a different way of thinking about programming and this course does justice to all of its core concepts.

A different way of thinking.

The exercises are broken down into easily digestible portions, so the Functional Programming apprentice isn't completely overwhelmed with the unfamiliar way of thinking about programming.

Great introduction to different way of thinking through examples in quite powerful language (for programmers who used to imperative way of thinking) .

The contents of the course are very well presented and allow you to get familiar with the different way of thinking that functional programming provides.

I had difficult time to change the way of thinking at first and to to refresh my algorithm knowledge.

Don't get discouraged from the first assignments, try to change your way of thinking, the solution will finally hit you!

-Fun assignments -Unconventional yet relevant subject -Teaches a new way of thinking rather than just a new technical skill -Very competent and eager to teach staff (both Prof. Odersky and the TAs) -An optional formal approach to FP Great teacher, good class pace and interesting homework problems.


An overview of related careers and their average salaries in the US. Bars indicate income percentile (33rd - 99th).

scala developer $72k

Java/Scala Engineer $74k

Scala/Perl Engineer $77k

IT Developer/Engineer 1 $87k

Scala Engineer $87k

IT Developer/Engineer 6 $97k

IT Developer/Engineer $99k

Developer Solutions Engineer $103k

Software Developer/Engineer $108k

IT Developer/Engineer 3 $110k

Developer/Systems Engineer $112k

IT Developer/Engineer Lead $127k


Sorted by most helpful reviews first

Guest says:

The best introduction I've had to Functional Programming (FP). Every lecture and concept taught is meaningful. Assignments really do a great job solidifying concepts. Some of them are quite challenging and can take many hours, but completing them and this course is very rewarding.

Guest says:

Coming from Java, Scala is very interesting. FP means your programs no longer maintain "state," which means you do away with constructs like variables and iteration that are so integral in Java. Scala instead uses "first class objects" that you can pass as parameters to other functions so you end up building programs that are recursive function calls without state. I think there's a real (and growing) role for FP and it's definitely worth exploring since it does offer more compelling solutions to a lot of computational problems. Expect to be frustrated though! A lot of these concepts will likely break the old paradigm you think in :)

Guest says:

Really liked how this course gave a look at what's happening under the hood, which sets it aside from other Scala courses imo. No tutorial I've found on the web has helped me transition from OOP and Functional Programming as smoothly as this course did. Word of caution: this is more of an intermediate course as they do dive right into things so you should at least know basics (at least understand loops, basic algorithms, recursions, which you can learn about on any number of other courses here).

Guest says:

I'd give this course a 4.5 if I could. This course is very challenging and there were some assignments where I truly felt like I was bordering on despair. Sometimes, this is because the course materials were unclear or not fully covered. Still I can say coming out of it it's very rewarding and I have a much stronger foundation for Scala than I did coming into the course.

Write a review

Your opinion matters. Tell us what you think.



École polytechnique fédérale de Lausanne

Rating 4.7 based on 1,100 ratings
Length 7 weeks
Effort 5 hours / week
Starts Nov 19 (4 weeks ago)
Cost $79
From École polytechnique fédérale de Lausanne via Coursera
Instructor Martin Odersky
Free Limited Content
Language English
Subjects Programming
Tags Computer Science Software Development