Save for later

Functional Programming Principles in Scala

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 and Enroll Now

OpenCourser is an affiliate partner of Coursera.

Get a Reminder

Send to:
Rating 4.7 based on 1,521 ratings
Length 7 weeks
Effort 5 hours / week
Starts Dec 14 (5 weeks ago)
Cost $79
From École polytechnique fédérale de Lausanne via Coursera
Instructor Martin Odersky
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Software Development

Get a Reminder

Send to:

Similar Courses

What people are saying

introduction to functional programming

This course was a good introduction to functional programming.

Awsome Great introduction to functional programming in general, you might need to be familiar with some basic concepts of functional programming, but I never felt lost in it.

Excellent, both theory and exercises Very nice introduction to functional programming in Scala.

Good introduction to Functional Programming concepts through scala.It will be interesting review the practices with other students in order to see other way to solve the challenges.Some of them put me at limit of my recursive programming.I go ahead with the next course.

Excellent introduction to Functional programming.

It was a very approachable yet deep introduction to functional programming.

Very practical and interesting introduction to functional programming.

This course is an excellent introduction to functional programming with a complete syllabus and good and clear lectures.

Wonderful introduction to functional programming very good course.

Extremely good introduction to functional programming.

Tough course which is a perfect introduction to functional programming and Scala.

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

A very tough course, but great introduction to functional programming.

Great teacher and Great Tests A bit dry at times but overall a comprehensive introduction to functional programming in Scala.

Read more

computer science

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.

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.

It touches many topics of computer science.

I know how to program, but I explicitly note I am not a computer science student.

This is the first course I took on coursera connected to computer science which doesn't use standard coursera's quizzes.

I am BSc in Computer Science and MSc in Information Management with some working experience as a Software Engineer for Fortune-100 companies.

There constant bombardment with concepts from computer science and mathematics, which I normally not mind, but I want to learn Scala here and only Scala.

I am someone who had to struggle with the programming assignments and spent several hours on them because I do not come from a computer science / traditional programming background.

This is a remarkable course in which the creator of the Scala programming language not only teaches the language but also offers deep insights into the theory of programming and computer science.

This is my very first course on Coursera and thanks to their scholarship Program which make me enable to learning from world top faculty in the field of Computer Science.

Read more

highly recommended

Highly recommended.

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

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.

Highly recommended!

Course by the Scala author, highly recommended.

HIghly recommended for newbie in functional programming and Java switchers Great course!

Read more

data structures

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).

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.

Scala's rich type system came in handy for the assignments -- once you've got the right idea for an approach, you just have to get the data structures to click (with some help from the compiler), and things just work!I appreciate that the assignments and examples were realistic.

Getting to implement Huffman Coding and basic data structures (functional and OO sets) helped me both appreciate the functional way to solve problems like these, and to understand the class of practical problems where similar solutions are applicable.Great course, and I'm excited for the next ones!

Excellent course for learning to write Scala code that strictly follows the functional programming paradigm and only uses immutable objects and data structures.If you just want to learn Scala quickly and don't care about functional programming, or need performance more than immutability, then this course might not be the best choice for you.

The other exercises are just hard, and there is not an easy exercise.This is an advanced course for people with solid bases on discrete mathematics, data structures, algorithms, software engineering, compilers, and operating systems.

The course is curated such that there is no requirement of prior expertise of other programming paradigms and data structures, however, knowledge of any OO-language would surely help you relate/compare and learn faster.

Задачки для домашней работы довольно сложные явно требуют 5-6 часов работы для людей у которых нет опыта в ФП This course is very challenging for those uninitiated in data structures and algorithms.

As someone with little formal CS background, this course was quite challenging due to the requirement of learning data structures and algorithms alongside functional programming.

Read more

software engineer

Not for software engineers!

Every software engineer should take this course to learn the fundamentals of functional programming and how to write concise code.

The course was quite good all in all, and even though I'm already experienced with many of the aspects involved in software engineering in general and in functional programming in particular, I've followed it with much interest and gained some new perspectives.

Myself and a senior software engineer in my team are unable to get the example assignment to compile, this may be due to the version of sbt being so old that things are falling apart.

I've been a software engineer for more than 10 years, and I can't believe how much I am learning from this course, including subjects that I thought I already knew.

I would put it at graduate level material / experienced software engineer.

strongly recommended for software engineers who want to have good fundamentals about functional programming I learned a lot This course can crack you brain and it is awesome!

Read more

different way of thinking

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 contents of the course are very well presented and allow you to get familiar with the different way of thinking that functional programming provides.

Functional programming is a different way of thinking about programs.

Read more

prof. martin odersky

Thanks to prof. Martin Odersky !

Great course I would like to thank Prof. Martin Odersky and his support staff for putting up such a great course.

Prof. Martin Odersky is may be not the best teacher I met, compared to Walter Lewin at MIT or Jim Fowler at Ohio State University, but the functional programming is a delightful subject and the assignments are fantastic.

I really enjoyed learning from first principles of functional programming in this class with Prof. Martin Odersky.

Prof. Martin Odersky has a real talent of discussing some entangled problems at hand.

Read more

anyone interested

讲课非常清楚,基本按照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.

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."

Read more

point of view

But from the logical point of view, this course is very good.

:-) Besides the templates, the homework also includes some unit tests which you can use to test your code from a functional point of view.

My earlier experience with coding has only been from a statistician's point of view with fluency in Python and R. Material could have been better presented, but I guess, who cares when it's coming from the man who invented the language itself!

However, I had to unlearn them all and get the real feel of it in Martin's point of view.

Read more

courses on coursera

One of the best courses on Coursera.

This is easily one of the best courses on Coursera.

I have started about 12 online courses on Coursera, edX and Udacity and completed 8 of them.

Definitely one of the best courses on Coursera and worth watching a 2nd, a 3rd time If the speaker was a bit more fluent in English, the course would be perfect.

Read more

get started with

Was really helpful to get started with Scala.

I will surely recommend this course to anyone interested to get started with Scala or even seasoned programmers.

This course is a little bit difficult to get started with if you do not have any code experience.

With a course completion diploma or without, the course is a great resource for people who want to get started with Scala or FP.

Read more

object oriented

The contents of the course can make you a better programmer in general by exposing you to concepts from functional programming combined with those from object oriented that you will find yourself applying to other programming languages.

Good course for learning functional paradigm coupled with object oriented concept.

Great introduction to functional programming, and not just scala syntax :) Definitely the first entry point to learning Functional Programming Excellent course, explains many important things about functional and object oriented programming .

The course is moderately difficult if you have experience in Object Oriented Programming et probably very easy if you have functional programming experience.

I have lot of experience on object oriented programming and software architecture in general.

So many new concepts for those coming from Object oriented programming.

Read more


An overview of related careers and their average salaries in the US. Bars indicate income percentile.

Assistant Camera Operator, Graphics, Scala $44k

Calling ALL OOP developers - Java, Scala, JavaScript, AngularJS $51k

Hadoop Engineer(Python,AWS , NOSQL, Spark... $52k

Apache Spark Developer $64k

Camera Operator, Graphics, Scala $70k

Full Stack Scala Engineer $76k

Corporate Technology- Scala/Spark/Hadoop Engineer $76k

Spark series editor $87k

Developer - Java/Scala $93k


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.

Rating 4.7 based on 1,521 ratings
Length 7 weeks
Effort 5 hours / week
Starts Dec 14 (5 weeks ago)
Cost $79
From École polytechnique fédérale de Lausanne via Coursera
Instructor Martin Odersky
Download Videos On all desktop and mobile devices
Language English
Subjects Programming
Tags Computer Science Software Development

Similar Courses

Sorted by relevance

Like this course?

Here's what to do next:

  • Save this course for later
  • Get more details from the course provider
  • Enroll in this course
Enroll Now