Reactive programming is a buzz phrase that seems to be growing in popularity and now you can sign up to a course on it taught by, among others, Martin Odersky of Scala fame.

Reactive Programming is a relatively new term but the idea goes back some way. You could say that its best known implementation is the spreadsheet. In standard programming you write statements or evalute functional expressions in a set sequence. Each action is performed and the program moves on - there are no logical associations set up between variables or other entities. Consider for a moment what happens when you write:

a=b+10;

The instruction is performed once and whatever was stored in b is added to ten and stored in a. Any changes to b after this instruction has been executed have no effect on a. At this point you probably are thinking that this is how things should be, but consider a similar instruction within a spreadsheet:

A1=B1+10

That is, B1+10 entered into cell A1. In this case any changes in B1 are immediately transferred to A1 for the life of the spreadsheet. In other words, the spreadsheet formula creates a persistent link between A1 and the value in B1.

This is the key idea of reactive programming. You essentially build a network of functions which stay updated for the life of the programming.

You might have spotted that reactive programming has a lot in common not only with spreadsheets but with data binding in MVC, the observer pattern and so on. It is also obvious that it fits together with event-driven programming in that events can be used to cause updates to data graphs.

This isn't a particularly new idea, but we still haven't solved the problem of how best to implement the idea in a general purpose language.

The new Cousera MOOC Principles of Reactive Programming taught by Martin Odersky, Erik Mejer and Roland Kuhn uses Scala and takes a functional approach to reactive programming. It is a follow on to Functional Programming Principles which is also an introduction to Scala. You can take the reactive programming course without doing the Scala course, but you will need to make sure that you know enough functional programming. It does however start with a review of the principles of functional programming in the first week.

You dont' find out much about the course from the introductiory video:

If you are interested and want to know more then the best idea is to consult the course syllabus.

From the FAQ:

What is the coolest thing I'll learn if I take this class? You will learn how to write programs which scale from one mobile phone up to thousands of servers.

The course starts on November 4th, but given the first week is revision you have plenty of time to join in. It is its first run which is always the best time to do a MOOC.