Skip to topic | Skip to bottom


Home

Main
Main.ReactiveProgrammingr1.4 - 28 Aug 2012 - 20:17 - ArieVanDeursen

Start of topic | Skip to actions

Course IN4389: Reactive Programming

Programming Reactive Extensions and LINQ

Background

Reactive programming is a programming paradigm oriented around data flows and the propagation of change. In this course, we will explore how to coordinate and orchestrate event-based and asynchronous computations such as sensor streams, Twitter and social media status updates, SMS messages, GPS coordinates, mouse moves and other UI events, web-sockets, high-latency calls to web-services, etc.

Big Data

Big data is one of the hottest buzzwords in the IT industry these days. Big data is data that does not fit inside conventional relational databases because it is either too big, it moves too fast, or it is not rectangular. Reactive programming involves manipulating flows of such big data.

datacube

If we classify the design space of big data across the three dimensions of Volume: small…big, Velocity: pull…push, and Variety: foreign/primary-key…key-value, we get the following “Big Data Cube” of possibilities. Each of the eight corners of the Big Data Cube corresponds to a (well-known) database technology. For example the traditional RDMS is at the top-left corner with coordinates (small, pull, fk/pk), Hadoop-based systems such as HBase are on the front-left corner with coordinates (big, pull, fk/pk). If we move from the top plane to the bottom plane, the data model changes from rows and primary keys to objects and pointers. On the bottom-left corner at coordinates (small, pull, k/v) we find traditional O/R mapping solutions such as LINQ to SQL, Hibernate, etc.

If we move to the front we get LINQ to Objects with coordinates (big, pull, k/v) and if we move to the right we change from batch processing to streaming or real-time data. There, on the bottom right at coordinates (big, push, k/v), we find the Reactive Extensions (Rx) or as it is sometimes called LINQ to Events, which is the topic of our course.

Reactive Extensions

The goal of Rx is to coordinate and orchestrate event-based and asynchronous computations such as sensor streams, Twitter and social media status updates, SMS messages, GPS coordinates, mouse moves and other UI events, web-sockets, high-latency calls to web-services, etc. using the LINQ standard query operators.

Course Organization

In the first half of the course we will explore regular LINQ to Objects and LINQ to SQL over pull-based collections and explain how we can get from LINQ to Objects to Rx via dualization, that is by “reversing all the arrows”. We will show how to bridge between Rx and traditional callback-based event programming, as well as the new C# await syntax and Task-based asynchronous APIs, and how to develop UI programs by writing queries over streams of events. In the second part of the course we will show how Rx is implemented, and construct a simple Rx-LINQ provider for a real-time social media source. We conclude this course by using Rx and LINQ to create a Coding4Fun-like application to solve a real-world problem of your choice.

Grade

The grade for this course will be based on (1) group participation; (2) labwork; (3) paper written; (4) final presentation of paper and labwork.

Literature

The book we will be using is the APress book Programming Reactive Extensions and LINQ by Jesse Liberty and Paul Betts. More information about Rx is available at the Rx MSDN website http://msdn.microsoft.com/en-us/data/gg577609 and on GitHub https://github.com/Reactive-Extensions.

Other literature includes:

Teachers

The course is taught by prof. dr. Erik Meijer, who is affiliated with Microsoft (Redmond, USA), in combination with a part time appointment at Delft University of Technology. Contact person for this course at TU Delft is prof. dr. Arie van Deursen.

Intended Audience

The audience of the course consists of MSc CS students with a strong interest in software engineering, cloud programming, and data manipulation.

The maximum number of students for this course is 15. Early registration (via Blackboard) is recommended if you want to participate.

Edition 2012

The schedule of the course 2012 consisted of 4 lectures in February, each 2*2 hour:

  • Wednesday February 8 and Wednesday February 15, 10:45-12:30, HB09.130 (tentative)
  • Thursday February 9 and Thursday February 16, 08:45-10:30, HB09.130 (tentative)

Furthermore, various on line sessions were planned to discuss the labwork and student papers: the dates for these were set together with the students. Due to the 9 hour time difference with Redmond, USA, these took place in the (early) evening.

For an impression of the course in 2012, have a look at Arie van Deursen's blogpost Teaching Reactive Programming.

Edition 2013

For 2013, a schedule similar to that from 2012 will be followed.

Contact

See also the IN4389 course description (2012/2013) in the on line TU Delft study guide.

For further information, contact Arie.vanDeursen@tudelft.nl


Edit | Attach | Printable | Raw | More topic actions
Revisions: | r1.6 | > | r1.5 | > | r1.4 | Page history | Backlinks
You are here: Main > WebLeftBar > Courses > ReactiveProgramming

to top

Copyright © 2003-2017, Software Engineering Research Group, Delft University of Technology, The Netherlands