This course introduces you to functional programming using the Scala programming language. In this course you will discover the elements of the functional programming style and learn how to apply them. 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 of assignments, most of which are also programming projects. Coursera.org partners with the top universities in the world to offer courses online for anyone to take, for free. I am not sure how they are funding this but you are not paying for it. So take advantage of this great learning experience.