Sorry, this page is no longer available
We may earn an affiliate commission when you visit our partners.
Course image
Julien Richard-Foy, Martin Odersky, Konrad Malawski, and Roland Kuhn

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.

You will learn how to:

- use, transform and sequence asynchronous computations using Future values

Read more

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.

You will learn how to:

- 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

Enroll now

Here's a deal for you

Save money when you learn with a deal that may be relevant to this course.
All coupon codes, vouchers, and discounts are applied automatically unless otherwise noted.

What's inside

Syllabus

Introduction, Recap and Asynchronous Programming
This module shows you how to get started with the course. After setting up your machine to work on and to submit assignments, it will provide you with a recap of the basics of the Scala language. Finally, you will encounter the first topic of the course, asynchronous programming with Futures.
Read more

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Explores Reactive Programming, which is standard in the industry for implementing scalable, resilient and responsive systems
Taught by Martin Odersky, Roland Kuhn, Konrad Malawski, and Julien Richard-Foy, who are recognized for their work in programming languages and reactive programming
Develops proficiency in concurrency, message passing, and data stream processing using Future, Akka, and Akka Stream
Suitable for intermediate-level students with some experience in Scala programming

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Mastering reactive systems with scala and akka

According to learners, this course is an excellent, deep dive into reactive programming with Scala and Akka. Many highlight its ability to provide a solid foundation in concepts like Futures, Actors, and Streams. The practical assignments are frequently praised as the most valuable aspect, being challenging yet rewarding. However, a significant number of students warn that the course demands a very strong Scala background, making it difficult for less experienced learners. Some also note that the course content could be updated to reflect the latest Scala 3 and Akka versions, which sometimes leads to setup challenges.
Modules on Akka Actors, Streams, and Typed Actors are particularly strong.
"I particularly enjoyed the modules on Akka Actors and Akka Streams."
"The section on Akka Streams was particularly well done."
"The introduction to Futures and Actors is clear. Later modules on Streams and Distributed Computing are very insightful."
"The course material is top-notch, especially the sections on Typed Actors and advanced stream processing."
Provides comprehensive and well-structured material on reactive systems.
"This course provided a fantastic introduction to reactive systems with Scala and Akka. The explanations were clear..."
"Excellent course! The instructor's depth of knowledge is evident."
"One of the best courses on reactive programming I've taken. The content is dense but incredibly well-structured."
"Very comprehensive course covering a wide range of reactive concepts. The balance between theory and practical application is good."
"Brilliant course for mastering reactive patterns with Scala and Akka. The instructor explains complex ideas clearly."
Hands-on assignments are challenging but highly effective for learning.
"The hands-on assignments really helped solidify the concepts."
"The practical exercises are challenging but incredibly rewarding."
"The assignments are tough but you learn a lot by doing them."
"The assignments are a highlight – they are challenging but fair."
"The assignments were the most valuable part for me, really forcing me to think reactively."
Pacing can be fast, and forum support could be more active.
"Some parts felt a little rushed, but overall, a highly valuable course."
"I felt the course could benefit from more detailed explanations for some advanced topics and a more active forum for questions."
"Felt a bit fast-paced at times."
"Also, the community support wasn't as active as I hoped."
Some Akka and Scala versions used feel outdated, causing friction.
"The version of Akka used felt a bit outdated, and I had some trouble with environment setup due to this."
"Decent course, but it could use an update. The Scala version and some Akka libraries feel a bit dated compared to current practices."
"It's a good course, but it needs an update for Scala 3 and newer Akka versions. The concepts are still valid, but the practical implementation details sometimes differ."
Course demands a very strong background in Scala and concurrency.
"It does assume a solid understanding of Scala already, so be prepared for that."
"My main gripe is that the course requires a very strong Scala background... I struggled a bit with the Scala syntax while also learning Akka concepts."
"I found this course extremely difficult... I think it expects too much prior knowledge, not just in Scala but in concurrent programming patterns."
"Prerequisites are high, make sure you know Scala well."
"If you're already very proficient in Scala and concurrency, then maybe it's good, but otherwise, be prepared for a steep climb."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Programming Reactive Systems (Scala 2 version) with these activities:
Organize Course Materials
Organize the notes, assignments, quizzes, and exams, which will help you prepare for the course and enhance your learning experience
Show steps
  • Review the course syllabus and identify the materials
  • Create a system for organizing the materials
  • Organize the materials
  • Review the organized materials
Read Designing Data-Intensive Applications
This book provides a comprehensive overview of the challenges and techniques involved in designing and building data-intensive applications.
View Secret Colors on Amazon
Show steps
  • Read the book
  • Take notes
  • Discuss the book with others
Tutorial: Understanding Concurrency
This tutorial will help you understand the concept of message-passing concurrency and how it is used in Akka.
Browse courses on Concurrency
Show steps
  • Watch the tutorial
  • Complete the exercises
Five other activities
Expand to see all activities and additional details
Show all eight activities
Practice asynchronously passing futures using zipWith
This practice will help you understand how to use `zipWith` to work with asynchronous computations.
Browse courses on Reactive Programming
Show steps
  • Create a program to implement futures
  • Create a function that takes two future values and zips them together
  • Call the function to zip the futures
  • Print the result
Attend a study group or meet with other students
Discuss the course material with other students to reinforce learning and get outside perspectives.
Show steps
  • Find a study group or other students to meet with
  • Schedule a meeting
  • Discuss the course material
Solve practice problems on reactive programming
Solving practice problems will help you solidify your understanding of reactive programming concepts.
Browse courses on Reactive Programming
Show steps
  • Find a set of practice problems
  • Solve the problems
  • Review your solutions
Build a simple reactive system using Akka Typed
This project will help you apply your knowledge of Reactive Programming and Akka Typed to build a working system.
Show steps
  • Design the system architecture
  • Implement the system using Akka Typed
  • Test the system
Create a blog post or article about Reactive Programming
Creating a blog post or article will help you synthesize your knowledge and understanding of reactive programming.
Browse courses on Reactive Programming
Show steps
  • Choose a topic
  • Research the topic
  • Write the blog post or article
  • Publish the blog post or article

Career center

Learners who complete Programming Reactive Systems (Scala 2 version) will develop knowledge and skills that may be useful to these careers:
Software Engineer
Software Engineers apply programming skills to design and develop software systems for various purposes. This course can help build a strong foundation for implementing reactive systems in Scala using Akka, which is a valuable skill set for Software Engineers.
Data Engineer
Data Engineers collect, process, and store large volumes of data and design systems that support data analysis. This course introduces Akka Streams, a tool for processing data streams, which is relevant to Data Engineers.
DevOps Engineer
DevOps Engineers bridge the gap between development and operations teams, ensuring efficient and reliable software delivery. This course introduces reactive programming, which can enhance the resilience and scalability of software systems, which is important for DevOps Engineers.
Software Architect
Software Architects design and manage the architecture of software systems. This course teaches reactive programming techniques that can enhance the scalability, resilience, and performance of software systems, which is important for Software Architects.
Data Scientist
Data Scientists use scientific methods to extract insights from data and develop predictive models. This course teaches reactive programming techniques that can enhance the efficiency and scalability of data processing tasks, which can benefit Data Scientists.
Machine Learning Engineer
Machine Learning Engineers design and develop machine learning models and algorithms. This course teaches reactive programming techniques that can improve the performance and efficiency of machine learning systems, which is important for Machine Learning Engineers.
Systems Administrator
Systems Administrators manage and maintain computer systems and networks. This course introduces reactive programming, which can help build more resilient and scalable systems, which is beneficial for Systems Administrators.
Database Administrator
Database Administrators manage and maintain databases. This course introduces reactive programming, which can help build more resilient and scalable database systems, which is beneficial for Database Administrators.
Technical Architect
Technical Architects design and manage the architecture of software systems. This course teaches reactive programming techniques that can enhance the scalability, resilience, and performance of software systems, which is important for Technical Architects.
Big Data Analyst
Big Data Analysts analyze large datasets to extract insights and patterns. This course introduces Akka Streams, a tool for processing data streams, which can be beneficial for Big Data Analysts.
Cloud Architect
Cloud Architects design and manage cloud computing systems. This course may be useful for Cloud Architects who want to build cloud-based reactive systems that can scale and handle high workloads.
Quality Assurance Analyst
Quality Assurance Analysts test and validate software systems to ensure they meet quality standards. This course may be helpful for Quality Assurance Analysts who want to gain experience with reactive programming techniques, which can enhance the reliability and maintainability of software systems.
Project Manager
Project Managers plan and manage software development projects. This course may be helpful for Project Managers who want to gain an understanding of reactive programming, which can improve the planning and execution of software development projects.
Web Developer
Web Developers design and build websites and web applications. This course may be helpful for Web Developers who want to create responsive and scalable web systems using reactive programming techniques.
Business Analyst
Business Analysts analyze and document business requirements and processes. This course may be helpful for Business Analysts who want to gain an understanding of reactive programming, which can enhance the efficiency and scalability of software systems.

Reading list

We've selected nine books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Programming Reactive Systems (Scala 2 version).
Provides a comprehensive guide to reactive programming with Scala and Akka. It covers the core concepts of reactive programming, such as actors, asynchronous computations, and reactive streams, and shows how to use them to build scalable, resilient, and responsive systems.
Provides a comprehensive guide to designing and building data-intensive applications. It covers the core concepts of data-intensive applications, such as data modeling, data storage, and data processing, and shows how to use them to build scalable, reliable, and efficient applications.
Provides a comprehensive guide to using Scala and Play to build reactive web applications. It covers the core concepts of Play, such as controllers, views, and routing, and shows how to use Scala to implement them.
Provides a comprehensive guide to using Scala for data science. It covers the core concepts of data science, such as data exploration, data analysis, and machine learning, and shows how to use Scala to implement them.
Provides a comprehensive guide to concurrency in Java. It covers the core concepts of concurrency, such as threads, locks, and synchronization, and shows how to use them to build concurrent applications that are scalable, efficient, and reliable.
Comprehensive guide to reactive programming with RxJava, the popular library for reactive programming in Java. It covers the core concepts of reactive programming, such as observables, operators, and schedulers, and provides practical examples of building reactive systems with RxJava.
Provides a comprehensive overview of reactive programming and microservices, with a focus on Java. It covers the fundamental concepts of reactive programming and microservices, and provides practical examples of building reactive microservices in Java.
Provides a comprehensive overview of reactive programming in Rust. It covers the fundamental concepts of reactive programming, such as streams, futures, and tasks, and provides practical examples of building reactive systems in Rust.
Provides a comprehensive overview of reactive programming in Clojure. It covers the fundamental concepts of reactive programming, such as streams, channels, and agents, and provides practical examples of building reactive systems in Clojure.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser