Principles of Reactive Programming

École Polytechnique Fédérale de Lausanne

Learn how to write composable software that stays responsive at all times by being elastic under load and resilient in the presence of failures. Model systems after human organizations or inter-human communication.

This is a follow-on for the Coursera class “Principles of Functional Programming in Scala”, which so far had more than 100’000 inscriptions over two iterations of the course, with some of the highest completion rates of any massive open online course worldwide.

The aim of the second course is to teach the principles of reactive programming. Reactive programming is an emerging discipline which combines concurrency and event-based and asynchronous systems. It is essential for writing any kind of web-service or distributed system and is also at the core of many high-performance concurrent systems. Reactive programming can be seen as a natural extension of higher-order functional programming to concurrent systems that deal with distributed state by coordinating and orchestrating asynchronous data streams exchanged by actors.

In this course you will discover key elements for writing reactive programs in a composable way. You will find out how to apply these building blocks in the construction of message-driven systems that are scalable and resilient.

The course is hands on; most units introduce short programs that serve as illustrations of important concepts and invite you to play with them, modifying and improving them. The course is complemented by a series of assignments, which are also programming projects.

Syllabus

Week 1: Review of Principles of Functional Programming: substitution model, for-expressions and how they relate to monads. Introduces a new implementation of for-expressions: random value generators. Shows how this can be used in randomized testing and gives an overview of ScalaCheck, a tool which implements this idea.

Week 2: Functional programming and mutable state. What makes an object mutable? How this impacts the substitution model. Extended example: Digital circuit simulation.

Week 3: Futures. Introduces futures as another monad, with for-expressions as concrete syntax. Shows how futures can be composed to avoid thread blocking. Discusses cross-thread error handling.

Week 4: Reactive stream processing.  Generalizing futures to reactive computations over streams. Stream operators.

Week 5: Actors. Introduces the Actor Model, actors as encapsulated units of consistency, asynchronous message passing, discusses different message delivery semantics (at most once, at least once, exactly once) and eventual consistency.

Week 6: Supervision. Introduces reification of failure, hierarchical failure handling, the Error Kernel pattern, lifecycle monitoring, discusses transient and persistent state.

Week 7: Conversation Patterns. Discusses the management of conversational state between actors and patterns for flow control, routing of messages to pools of actors for resilience or load balancing, acknowledgement of reception to achieve reliable delivery.

Recommended Background

You should have a background equivalent to someone who completed the course “Principles of Functional Programming”. We assume you know the fundamentals of functional programming and the Scala language.

Suggested Readings

The class is designed to be self-contained, based on the ideas expressed in the Reactive Manifesto. For further reading on data structures and language concepts we recommend Structure and Interpretation of Computer Programs - 2nd Edition (MIT Electrical Engineering and Computer Science)  by Abelson and Sussman, published by MIT Press. For further reading on concurrent systems we recommend Concepts, Techniques and Models of Computer Programming by Peter van Roy and Seif Haridi, published by MIT Press. For learning more about Scala, we recommend Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition  by Odersky, Spoon and Venners, published by Artima Press, or else Scala for the Impatient , by Horstmann, published by Addison Wesley. More in-depth background on reactive systems is available in the upcoming book Reactive Design Patterns by Kuhn and Allen, to be published by Manning (currently in early access).

Course Format

The class will consist of lecture videos of about 1–2 hours per week split in multiple smaller parts. These contain integrated quiz questions per video. There will also be standalone homeworks that are not part of video lectures.

FAQ

  • Will I get a certificate after completing this class?

    Yes. Students who successfully complete the class will receive a certificate signed by the instructor.

  • What resources will I need for this class?

    You should have the following installed: - Java Virtual Machine JDK 1.6 or higher. - A Scala distribution version 2.10 or higher The recommended development environment for the course is the Scala IDE for Eclipse. It comes with a Scala distribution so if you intend to work only in Eclipse you just need to install the Scala IDE.

  • What is the coolest thing I'll learn if I take this class?

    You will learn how to write programs which scale from one mobile phone up to thousands of servers.
会期:
  • 2015年4月13日, 7 星期
  • 2013年11月04日, 7 星期
介绍:
  • 免费:
  • 收费:
  • 证书:
  • MOOC:
  • 视频讲座:
  • 音频讲座:
  • Email-课程:
  • 语言: 英语 Gb

反馈

目前这个课程还没有反馈。您想要留第一个反馈吗?

请注册, 为了写反馈

已经在列表:
Small-icon.hover Functional Programming
Материалы по функциональному программированию
Logo Технология программирования
3 курс МИЭМ ВШЭ, 5 кредитов.
还有这个题目的:
15-564s03 Information Technology I
Information Technology I helps students understand technical concepts underlying...
6-005f11 Elements of Software Construction (Fall 2011)
This course introduces fundamental principles and techniques of software development...
183602_7e51_2 Learn Node.js from Scratch
JavaScript, REPL, Node API, Modules, Mocha and Much More
11144_dc50_6 Learn C++, Tutorial for Beginners
The Ultimate C++ Tutorial - Learn theFundamentalsof C++ with expert Paul Deitel...
Extensionflag Introduction to Computer Science Using Java II
This is the second course in object-oriented programming methods using...
还有标题«工程科学»:
Regular_166c19c9-7eab-48da-b7b8-c21e383c1f58 Dysphagia: Swallowing Difficulties and Medicines
This course will enhance the knowledge of any person involved in the administration...
Regular_aff4cca2-6ed7-47d3-a142-04cd74524847 Challenges in Antibiotic Resistance: Gram Negative Bacteria
This course by BSAC is for healthcare professionals managing infections. You...
Regular_72e3f111-3cd0-40f2-850e-64dcae82faf1 Digital Health for Cancer Management: Smart Health Technologies in Complex Diseases
Learn how new digital health technologies are transforming cancer management...
Regular_05212c89-4b1c-4110-b193-1de5375ec602 Go Solar PV: The Business Potential of Solar Photovoltaics
Explore the current state and future potential of solar PV technology, and get...
967eee29-87e8-4f2d-9257-a1b38ec07e85-2ad0c7c92b16.small IoT Sensors and Devices
Explore various IoT devices and sensor types, how they work, and how we connect...
还有Coursera:
Success-from-the-start-2 First Year Teaching (Secondary Grades) - Success from the Start
Success with your students starts on Day 1. Learn from NTC's 25 years developing...
New-york-city-78181 Understanding 9/11: Why Did al Qai’da Attack America?
This course will explore the forces that led to the 9/11 attacks and the policies...
Small-icon.hover Aboriginal Worldviews and Education
This course will explore indigenous ways of knowing and how this knowledge can...
Ac-logo Analytic Combinatorics
Analytic Combinatorics teaches a calculus that enables precise quantitative...
Talk_bubble_fin2 Accountable Talk®: Conversation that Works
Designed for teachers and learners in every setting - in school and out, in...

© 2013-2019