This course introduces the concepts of functional programming using the Scala programming language. Functional programming has become more and more popular in recent years because it promotes code that’s safe, concise, and elegant. Furthermore, functional programming makes it easier to write parallel code for today’s and tomorrow’s multiprocessors by replacing mutable variables and loops with powerful ways to define and compose functions.
Scala combines the ideas of functional and object-oriented programming and interoperates seamlessly with Java and its tools. It is now being used in a rapidly increasing number of open source projects and companies. It provides the core infrastructure for sites such as Twitter, LinkedIn, Foursquare, Tumblr, and Klout.
The course teaches the elements of functional programming style and how to apply them in everyday programming tasks. It attempts to build a foundation for reasoning about functional programs, by touching upon proofs of invariants and the tracing of execution symbolically.
This is a 7 weeks course. Each week a set of videos and a programming assignment are released. The programming assignments complement the course material and are much harder than your typical MOOC assignments. A single assignment can easily take anywhere from 5 to 10 hours. It does not appear to be a watered-down version of the course taught at EPFL and looks like the real deal.
This is not a beginner level course and is not meant as a first introduction to programming. It expects students to have at least one year programming experience. It is a hectic course which will keep you engaged throughout. I would recommend it for everyone serious about Computer Science.