coursera.org
Principles of Reactive Programming
Learn how to write composable software that stays responsive at all times by being elastic under load and resilient in the presence of failures. Model systems after human organizations or inter-human communication.