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
The Actor Model
This module presents the Actor model: after analyzing its advantages and strengths, you will learn the semantics and design principles of actor systems before learn how to concretely test actor-based programs
Handling Failure and State
This module further explores the Actor model by showing useful patterns used to create complex and resilient programs
Distributed Computing
Actors allow you to decouple a program in units that can be distributed on a single or on multiple machines. This module elaborates on the power and the consequences of distributed computation
Typed Actors
Now that you are familiar with the Actor model, this module shows how to leverage Scala's powerful type system to write programs with more confidence by using typed actor descriptions
Stream Processing
This module introduces the concept of data streams and the basic semantics of stream processing before showing how the Akka framework can be used to tackle common challenges in this domain
Advanced Stream Processing
This final module elaborates on more complex and powerful patterns in stream processing as well as how to the integrate the actor model to create custom nodes of data processing

Good to know

Know what's good
, what to watch for
, 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

Save Programming Reactive Systems to your list so you can find it easily later:
Save

Reviews summary

Akka library course

Learners say that programming Akka is the main focus of this reactive systems course. While lectures are great at teaching theory, students mention that assignments are difficult, unorganized, and unforgiving. Further, students complain that instructors and the community provide little support. Despite all of this, learners appreciate the great topics covered and enjoy the slides and videos presented.
Great at teaching theory.
"Great at teaching theory."
This course focuses on Akka Libraries.
"This course would more appropriately be titled "Use of Akka Libraries""
Instructors rarely respond to questions.
"Course questions/comments are not responded to by the instructor(s)."
Assignments are messy, unforgiving, and time-consuming.
"I​nteresting course but the assignments are a mess."
"What's more, there's little to no community activity or support from the instructors."

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:
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 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.
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.
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.

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

Here are nine courses similar to Programming Reactive Systems.
Programming Reactive Systems (Scala 2 version)
Most relevant
Akka Streams with Scala | Rock the JVM
Most relevant
Distributed Programming in Java
Most relevant
Akka Classic Essentials with Scala
Most relevant
Akka.NET 1 Persistence Fundamentals
Most relevant
Java 8 Fundamentals: Asynchronous Programming Using...
Reactive Programming in Java 12 with RxJava 2
Getting Started with Reactive Programming Using RxJS
Message Passing
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 - 2024 OpenCourser