This Spring I paid around $350 for the new specialization on Coursera. Its name Functional Programming in Scala. Since that time I have completed 3 courses, and 2 are still not published. So I decided to use this pause for writing a some kind of report. I believe this information may be helpful for those of you who still have doubts regarding the start of the Scala specialization on Coursera.

Here is a list of three courses, which I completed:

  • Functional Programming Principles in Scala
  • Functional Program Design in Scala
  • Parallel programming

The remaining two courses from the specialization are still under development, so I will not say anything about them.

Before the certification

Before I enrolled to the first course an overall experience with Scala was approximately 2 years. A code I developed wasn’t genius at all and my motivation was to see how top Scala programmers solve real tasks. Moreover it was interesting for me to see how the education process was build. Because I’m a teacher too 🙂

Now you know what expectations I had before the enrollment to the specialization. I was driven by strong desire to learn best practices in Scala development. Moreover the courses descriptions were so promising:

“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.”

By the way, if you have finished any of these courses, please leave your feedback about them in the comments.

Learning process

All courses are consist of modules. Every module covers some particular topic, e.g. higher order functions etc. It contains a set of video screencasts, where teachers explain a theory part and show some practical samples.
I like to watch the videos, because they explain the smallest details of Scala.

There are questions inside of the video lecture. They are not mandatory, but they help to be focused and listen the materials very attentive.

By the way, each module is limited by time frame. You have exactly one week for solving a module assignment. If you don’t submit a solution of the assignment within one week you can not get a maximum grade.
This is pretty fair rule and helps to keep a learning pace.

As a rule, video lectures are not long and don’t exceed 1 hour per module.


Almost every module has its own assignment. Of course it is relevant to the module topic. But there are many so called “academic” tasks such as Huffman Coding or Anagrams… I’m not very enthusiastic when need to work on such tasks. It’s much better to solve assignments like searching tweets by hashtags or recursion problems…
Definitely it depends on your personal preferences, but as for me, it is better to practice new knowledge on real-world tasks.

Solving of weekly assignments always take about 6 hours for me. But in the courses descriptions you can find information about ~3 hour… I’m not sure that everyone can complete the tasks so fast. For example I’m not so “reactive” student and need more time for practical part 🙂

Final impression

I’m happy that I completed 3 Scala courses. It was really challenging for me. I learned a lot of new stuff, such as parallel collections, interpretation of for-comprehensions in terms of flatMap and map functions, arguments passed by reference and many other useful topics.

From the other side I met many topics which were explained not so easy as they could be. Fortunately every module has its own discussion forum and it was extremely useful to ask questions there.

I recommend these courses to every Scala developer who has more than one year of coding experience. I think, studying by the Specialization is hard for 90% of beginners.

About The Author

Mathematician, programmer, wrestler, last action hero... Java / Scala architect, trainer, entrepreneur, author of this blog