We may earn an affiliate commission when you visit our partners.
Course image
Roland Kuhn, Konrad Malawski, Martin Odersky, and Julien Richard-Foy

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

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
Taught by Martin Odersky, Roland Kuhn, Konrad Malawski, and Julien Richard-Foy, who are recognized for their work in Scala and Akka
Examines reactive programming, which is standard in industry
Builds a strong foundation for beginners and strengthens an existing foundation for intermediate learners
Develops professional skills or deep expertise in reactive programming with Scala and Akka
Teaches skills, knowledge, and/or tools that are highly relevant to industry
This course is explicitly requires learners to come in with extensive background knowledge first

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 students, Programming Reactive Systems offers a comprehensive dive into building scalable, resilient, and responsive applications using Scala and the Akka framework. Learners appreciate the course's strength in explaining complex asynchronous concepts, from Futures to advanced Akka Actors and Stream Processing. While it provides a strong blend of theoretical foundations with practical application, some found the prerequisites for Scala and functional programming quite high. The course is highly valuable for career-focused professionals seeking to deepen their expertise, despite a few notes on its challenging nature for those new to reactive principles.
Instructor provides clear explanations of complex topics.
"The instructor does an excellent job of breaking down very complex topics into understandable, digestible segments."
"Their expertise in reactive programming and Akka shines through, making even the hardest parts accessible and clear."
"I really appreciated the instructor's clear explanations and logical progression through the modules, it made a difference."
Demanding content but with significant learning outcomes.
"This course is incredibly challenging, but the knowledge gained is absolutely worth the effort and time invested."
"Expect to invest a lot of time in the material and assignments, but you'll emerge with a deep understanding of reactive systems."
"It pushed my limits, yet I feel significantly more confident building complex concurrent and scalable applications now."
Focuses on practical application with Akka.
"The hands-on coding and projects are the strongest part of the course for me, truly reinforcing Akka concepts."
"I loved the detailed examples on building actor systems and integrating Akka Streams effectively into projects."
"This course gave me practical tools and strategies I could immediately apply to my work projects on distributed systems."
Builds a solid understanding of reactive principles.
"The course really helped solidify my understanding of the asynchronous nature and core principles of reactive systems."
"I appreciate how the instructor took the time to explain the 'why' behind reactive concepts, not just the 'how'."
"Before this course, reactive programming felt like magic; now I have a clear mental model of how it all works."
Requires strong foundational knowledge in Scala and FP.
"If you're not strong in Scala and functional programming, you will struggle immensely with this course."
"I found myself spending more time learning Scala nuances than the reactive concepts themselves, which was tough."
"Be warned, this course assumes a solid background; it's definitely not for beginners in Scala or functional programming."

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 with these activities:
Step through Akka tutorials
Akka tutorials will allow you to explore the Akka framework's features and capabilities in a guided way, helping you build a strong foundation for your learning in this course.
Browse courses on Akka
Show steps
  • Find a suitable Akka tutorial online.
  • Follow the tutorial step-by-step, experimenting with the code and concepts as you go.
Engage in discussions with peers
Participating in discussions with peers will allow you to exchange knowledge, clarify doubts, and learn from others' experiences, enhancing your overall understanding of the course material.
Show steps
  • Join or create a study group or online discussion forum related to the course.
  • Actively participate in discussions, asking questions, sharing insights, and providing support to others.
Solve coding challenges related to reactive programming
Solving coding challenges will test your understanding of reactive programming principles and help you develop your problem-solving skills in this domain.
Browse courses on Reactive Programming
Show steps
  • Identify coding challenges platforms or websites that offer reactive programming-related problems.
  • Select a challenge and read the problem statement carefully.
  • Design and implement a solution using reactive programming techniques.
  • Test and debug your solution to ensure correctness.
One other activity
Expand to see all activities and additional details
Show all four activities
Build a simple reactive application
Building a reactive application will allow you to apply the concepts learned in the course to a practical project, solidifying your understanding and gaining valuable hands-on experience.
Browse courses on Reactive Programming
Show steps
  • Plan and design the application, including the functionality and architecture.
  • Implement the application using reactive programming techniques, such as actors, streams, and asynchronous messaging.
  • Test and debug the application to ensure correctness.
  • Deploy the application and monitor its performance.

Career center

Learners who complete Programming Reactive Systems will develop knowledge and skills that may be useful to these careers:
Software Engineer
Software Engineers lead the design, development, and maintenance of software systems. To succeed in this role, it can be helpful to build a foundation in asynchronous programming and software development using the Scala language. This course does just that, teaching you to write concurrent reactive systems based on Actors and message passing using untyped Akka and Akka Typed.
DevOps Engineer
DevOps Engineers bridge the gap between software development and operations. To be successful in this role, it can be helpful to have a strong understanding of distributed computing and how to design systems that are resilient to failures. This course covers these topics in detail, helping you build the skills needed to succeed as a DevOps Engineer.
Systems Analyst
Systems Analysts design and implement computer systems. To be successful in this role, it can be helpful to have a strong understanding of asynchronous programming and software development using the Scala language. This course covers these topics in detail, helping you build the skills needed to succeed as a Systems Analyst.
Software Architect
Software Architects design and develop software systems. To be successful in this role, it can be helpful to have a strong understanding of distributed computing and how to design systems that are resilient to failures. This course covers these topics in detail, helping you build the skills needed to succeed as a Software Architect.
Computer Programmer
Computer Programmers write and maintain computer code. To be successful in this role, it can be helpful to have a strong understanding of asynchronous programming and software development using the Scala language. This course covers these topics in detail, helping you build the skills needed to succeed as a Computer Programmer.
Mobile Developer
Mobile Developers design and develop mobile applications. To be successful in this role, it can be helpful to have a strong understanding of asynchronous programming and software development using the Scala language. This course covers these topics in detail, helping you build the skills needed to succeed as a Mobile Developer.
Quality Assurance Analyst
Quality Assurance Analysts test and evaluate software systems. To be successful in this role, it can be helpful to have a strong understanding of asynchronous programming and software development using the Scala language. This course covers these topics in detail, helping you build the skills needed to succeed as a Quality Assurance Analyst.
Product Manager
Product Managers manage the development and launch of new products. To be successful in this role, it can be helpful to have a strong understanding of how software is developed and how to design systems that meet the needs of users. This course covers these topics in detail, helping you build the skills needed to succeed as a Product Manager.
Data Engineer
Data Engineers design and build data management systems. This course may be useful for those looking to enter this field, as it teaches how to transform and consume infinite and intermittent streams of data with Akka Stream in a non-blocking way. This knowledge can help you build and maintain efficient and reliable data pipelines.
Game Developer
Game Developers design and develop video games. This course may be useful for those looking to enter this field, as it teaches how to transform and consume infinite and intermittent streams of data with Akka Stream in a non-blocking way. This knowledge can help you build and maintain efficient and reliable game engines.
Cloud Architect
Cloud Architects design and manage cloud computing systems. This course may be useful for those looking to enter this field, as it teaches how to design systems that can scale out according to a varying workload. This knowledge can help you build cloud systems that are both efficient and cost-effective.
Web Developer
Web Developers design and develop websites and web applications. This course may be useful for those looking to enter this field, as it teaches how to transform and consume infinite and intermittent streams of data with Akka Stream in a non-blocking way. This knowledge can help you build and maintain efficient and reliable web applications.
Data Scientist
Data Scientists use data to solve business problems. This course may be useful for those looking to enter this field, as it teaches how to transform and consume infinite and intermittent streams of data with Akka Stream in a non-blocking way. This knowledge can help you build and maintain efficient and reliable data pipelines, which are essential for data science.
Technical Writer
Technical Writers create documentation for software and other technical products. This course may be useful for those looking to enter this field, as it teaches how to write clear and concise documentation for complex technical concepts. This knowledge can help you succeed as a Technical Writer.
Database Administrator
Database Administrators manage and maintain database systems. This course may be useful for those looking to enter this field, as it teaches how to design systems that can scale out according to a varying workload. This knowledge can help you build and maintain database systems that are both efficient and reliable.

Reading list

We've selected eight 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.
RxJava popular reactive programming library for Java. can provide insights into the practical aspects of reactive programming, although it does not cover Scala or Akka.
Provides a concise and practical introduction to Scala. It can serve as a helpful resource for those new to Scala who want to quickly gain a basic understanding of the language.
Provides a comprehensive overview of data-intensive application design and architecture. It can provide valuable context for understanding the role of reactive programming in handling large volumes of data.

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