EPFLx: Programming Reactive Systems

EPFLx: Programming Reactive Systems

by École polytechnique fédérale de Lausanne

Programming Reactive Systems

Course Description

Welcome to "Programming Reactive Systems," an intermediate-level Computer Science course offered by EPFLx. This comprehensive course delves into the world of reactive programming, equipping you with the skills to build scalable, resilient, and responsive systems using Scala and Akka. You'll learn how to implement reactive systems based on the principles outlined in the Reactive Manifesto, focusing on asynchronous message-passing and event-driven architectures.

What You Will Learn

  • Master the use and transformation of asynchronous computations using Future values
  • Develop concurrent reactive systems using Actors and message passing, with both untyped Akka and Akka Typed
  • Design systems that are resilient to failures
  • Implement scalable systems that can adapt to varying workloads
  • Transform and consume infinite and intermittent data streams using Akka Stream in a non-blocking manner
  • Gain a deep understanding of how back-pressure controls data flows

Pre-requisites

  • At least one year of programming experience
  • Preferably, experience with Scala or another functional programming language
  • Familiarity with basic concepts of functional programming in Scala (case classes, higher-order functions, standard collections)

Course Content

  • Functional programming in Scala (review)
  • Asynchronous programming with Future API
  • Actor programming model and Akka actors
  • Failure handling and supervision in actor systems
  • Actor lifecycle monitoring and Receptionist pattern
  • Persistent actor state
  • Distributing actors in a cluster
  • Eventual consistency
  • Actor composition and scaling
  • Protocols in Akka Typed and adapters
  • Stream processing challenges and Reactive Streams specification
  • Akka Streams: introduction, failure handling, and processing rate
  • Streaming protocols and stream composition
  • Stateful operations and materialized values
  • Splitting and merging streams
  • Integration of streams with typed actors

Who This Course Is For

  • Software developers looking to enhance their skills in building responsive, resilient, and scalable systems
  • Programmers with experience in Scala or functional programming who want to explore reactive programming
  • Computer science students or professionals interested in advanced concurrent and distributed systems
  • Anyone looking to gain practical experience with Akka and reactive programming principles

Real-World Applications

  • Developing high-performance, scalable web applications and microservices
  • Building responsive and fault-tolerant distributed systems
  • Creating data processing pipelines that can handle large volumes of streaming data
  • Designing IoT systems that can manage numerous concurrent connections
  • Implementing real-time analytics and monitoring systems
  • Developing resilient backend systems for mobile and web applications
  • Optimizing existing systems for better performance and scalability

Syllabus

  1. Review of functional programming in Scala
  2. Asynchronous programming with Future API
  3. Actor programming model
  4. Introduction to Akka actors
  5. Failure handling with actors using supervision
  6. Actor lifecycle monitoring and Receptionist pattern
  7. Persistent actor state
  8. Distributing actors in a cluster
  9. Eventual consistency
  10. Actor composition
  11. Scaling actor systems
  12. Protocols in Akka typed
  13. Akka typed adapters
  14. Challenges of stream processing
  15. The Reactive Streams specification
  16. Introduction to Akka Streams
  17. Streams failure handling and processing rate
  18. Streaming protocols and stream composition
  19. Stateful operations and materialized values
  20. Splitting and merging streams
  21. Integrating streams with typed actors
Similar Courses
Course Page   EPFLx: Programming Reactive Systems