Skip to main content

Programming Reactive Systems

About This Course

Reactive programming is a set of techniques for implementing scalable, resilient and responsive systems. The basic building-block of such systems is event handlers. This course teaches how to implement reactive systems by using high-level abstractions based on event-handlers.

The course starts by showing how to abstract over event handlers. Then, it explains how to write concurrent systems by using the Actor programming model, how to make these systems resilient to failures, and how to scale out to distributed actors. Last, the course shows how to manipulate, in a resource efficient way, intermittent and potentially infinite streams of data.

Learning Outcomes. By the end of this course you will be able to:

  • use, transform and sequence asynchronous computations using Future values,
  • write concurrent systems based on Actors, using untyped Akka and Akka Typed,
  • design systems resilient to failures,
  • implement systems that can scale out according to a varying workload,
  • transform and consume infinite and intermittent streams of data with Akka Stream,
  • understand how back-pressure controls flows of data


You should have at least one year programming experience, preferably in Scala or a functional language. Ideally, you have followed the Functional Programming Principles in Scala course. You should have some familiarity using the command line.

Course Staff

Martin Odersky

Martin Odersky

Martin Odersky is a professor at EPFL in Lausanne, Switzerland. He has been working on programming languages for most of his career. He first studied structured and object-oriented programming as a PhD student of Niklaus Wirth, then fell in love with functional programming while working as a post doc at IBM and Yale. When Java came out, he started to add functional programming constructs to the new platform. This led to Pizza and GJ and eventually to Java 5 with generics. During that time he also developed javac, the current reference compiler for Java.

Over the last 10 years, Martin worked on unifying object-oriented and functional programming in the Scala language. Scala quickly escaped from the research lab and became a popular open source tool and industrial language. He now oversees development of Scala as head of the programming group at EPFL and as chairman of the Lightbend company.

Roland Kuhn

Roland Kuhn

Roland Kuhn is CTO and co-founder of Actyx, author of Reactive Design Patterns, a co-author of the Reactive Manifesto, co-teacher of the Coursera course “Principles of Reactive Programming”, and a passionate open-source hakker. Previously, he led the Akka project at Lightbend. He also hold a Dr. rer. nat. in particle physics from TU München and have worked in the space industry for several years.

Konrad Malawski

Konrad Malawski

Konrad Malawski has been part of the the core Akka team at Lightbend until mid-2018, where he has contributed to most of its modules, including core Actors, Persistence, Streams, Clustering as well as the upcoming Typed modules. He was the main maintainer of Akka HTTP during its transition from Spray. He also participated in the Reactive Streams initiative, which eventually became part of Java 9, where he worked on the TCK and helped other implementations adhere to the spec. He founded multiple user groups including the GeeCON conference, Java and Scala user groups as well as computer science paper reading clubs such as SCKRK. He frequently shares his work and research in talks and workshops internationally. His interests range from high performance multi-threading all the way to wide-scale distributed systems. His work in community building and bridging the Scala and Java communities has been acknowledged by being named a Java Champion in 2017.

Julien Richard-Foy

Julien Richard-Foy

Julien Richard-Foy is director of education at Scala Center. He makes sure that programming techniques that have been proven successful in the industry or that have solid theoretical foundations are accessible to as many curious people as possible.

Frequently Asked Questions

What web browser should I use?

The Open edX platform works best with current versions of Chrome, Firefox or Safari, or with Internet Explorer version 9 and above.

See our list of supported browsers for the most up-to-date information.

  1. Course Number

  2. Classes Start

  3. Estimated Effort