Simon Van de Water

Job Description

I am a PhD-student at the Software Languages Lab, which is part of the Computer Science Department of the Faculty of Sciences at the Vrije Universiteit Brussel.

Research Description

Reactive Object-Oriented Programming

The massive adoption of mobile devices, such as smart phones and tablets has given rise to an increasing number of event-driven applications that run on these mobile devices. Such applications have to deal with a plethora of events, e.g. originating from the GPS sensor, accelerometer, network events. Currently, event-based programming languages are often used to develop reactive applications but this implies inversion of control and often leads to callback hell. The reactive programming paradigm is a paradigm that is generally accepted as well suited for the development of event-driven and interactive applications. This paradigm introduces abstractions that allow developers to define time-varying values and it automatically tracks dependencies between such time-varying values. In reactive programming, developers express reactive programs in terms of what to do. The language is responsible to decide when to do it.
Various approaches to functional reactive programming have already been embedded in various languages such as Scheme, JavaScript and Haskell. Since they are functional languages, adopting them in imperative languages requires manual glue code between the functional reactive code and the imperative, possibly object-oriented code. Such languages also do not fit well with mutable objects. Because of this, programmers often use traditional non-reactive solutions such as the observer pattern to implement reactive applications. They bear with such error-prone solutions so that they can still enjoy the benefits of object-oriented design.
My research will focus on reconciling the reactive programming paradigm with the object-oriented programming paradigm. I have already worked on this during my thesis and this resulted in reAcT. ReAcT is a variant of the AmbientTalk language which unifies reactive programming and the object-oriented model. ReAcT introduces a novel reactive abstraction called reactive objects. I am now working on refining the semantics and attributes of such reactive objects.


  • Teaching assistant for Algorithms and Data Structures (1st bachelor course) (more information)

Guided Master's Theses

  • Jasper Tack (2014): “Distributed Model for Digital Wallet-based Applications”
  • Christophe Vandenberghe (2014): “Towards Reactive Object-Oriented Programming”
  • Carlo Alberto Catarinicchia (2014): "DrApp: A JavaScript Framework for SoLoMo Web Applications"
  • Deepika Kumar (2015): "A Reactive Cross-Platform Approach to enhance ECM applications"
  • Kevin Noppe (2015): "A Visual Environment for Creating and Debugging Reactive Applications"
  • Coldea Sergiu Alexandru (2015): "Persisting RETE"