Coursera公开课"Functional Programming Principles in Scala"已开课，对于函数式编程感兴趣的同学可以关注。以下是授课老师也是Scala的作者Martin Odersky教授的邮件内容：
The Functional Programming Principles in Scala class has started.
You will find on the Coursera site
- videos to help you get started
- lectures for week1
- the week1 assignment
We look forward in your participation of the course and hope we'll meet you on the discussion forums.
Martin Odersky and the Functional Programming Principles in Scala Course Staff
About the Course
This course introduces the cornerstones 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 is a language that fuses functional and object-oriented programming in a practical package. It interoperates seamlessly with Java and its tools. Scala is now 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.
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 of assignments, most of which are also programming projects.
Week One: Programming paradigms; overview of functional programming and the Scala programming language.
Week Two: Defining and using functions, recursion and non-termination, working with functions as values, reasoning by reduction.
Week Three: Defining and using immutable objects, review of inheritance and dynamic binding.
Week Four: Working with collections: Sequences, sets and maps
Week Five: Defining recursive data and decomposition with pattern matching.
Week Six: Reasoning about functions
Week Seven: Case study