Skip to main content

Programming Reactive Systems

Principles of Reactive Programming in Scala.

Programming Reactive Systems

There is one session available:

After a course session ends, it will be archived.
9,111 already enrolled!
Estimated 9 weeks
5–7 hours per week
Self-paced
Progress at your own speed
Free
Optional upgrade available

About this course

Skip About this course

Reactive programming is a set of techniques for implementing scalable, resilient and responsive systems as per the Reactive Manifesto. Such systems are based on asynchronous message-passing, and their basic building-blocks are event handlers. This course teaches how to implement reactive systems in Scala and Akka by using high-level abstractions, such as actors, asynchronous computations, and reactive streams.

At a glance

  • Institution: EPFLx
  • Subject: Computer Science
  • Level: Intermediate
  • Prerequisites:

    You should have at least one year programming experience, preferably in Scala or a functional language.

  • Language: English

What you'll learn

Skip What you'll learn
  • use, transform and sequence asynchronous computations using Future values,
  • write concurrent reactive systems based on Actors and message passing, 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 in a non-blocking way,
  • understand how back-pressure controls flows of data

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.

During this course we’ll go through:

  • reminder on functional programming in Scala (case classes,higher-order functions, standard collections),
  • asynchronous programming with Future API,
  • actor programming model,
  • introduction to Akka actors,
  • failure handling with actors using supervision,
  • actor lifecycle monitoring and Receptionist pattern,
  • persistent actor state,
  • distributing actors in a cluster,
  • eventual consistency,
  • actor composition,
  • scaling actor systems,
  • protocols in Akka typed,
  • Akka typed adapters,
  • challenges of stream processing,
  • the Reactive Streams specification,
  • introduction to Akka Streams,
  • streams failure handling and processing rate
  • streaming protocols and stream composition,
  • stateful operations and materialized values,
  • splitting and merging streams,
  • integrating streams with typed actors.

About the instructors

Interested in this course for your business or team?

Train your employees in the most in-demand topics, with edX for Business.