+The amount of computers around us is growing exponentially.
+With it, the systems in which they operate are becoming increasingly complex.
+Many of these computers are so called \emph{edge devices}, operating in \gls{IOT} systems.
+Within these orchestras of computers, they perform the role of interacting with the outside world.
+These specialised computers are often powered by microcontrollers and therefore have little memory, small processors, and slow communication.
+On the other hand, they are designed for embedded systems and hence cheap, tiny, energy efficient, and is easily equipped with various sensors and actuators.
+Not only are \gls{IOT} systems dynamic, interactive, distributed, collaborative, multi-user, and multitasking.
+Also, the orchestra of computers has vastly different hardware and software characteristics, causing semantic friction, making programming such systems classically complex.
+
+\Gls{TOP} is a declarative programming paradigm with roots in functional programming that allows high-level interactive collaborative workflows to be specified for the work that needs to be done.
+From this specification, a ready-for-work computer program is generated supporting the user in actually performing the work.
+The main building blocks of \gls{TOP} programs are tasks, an abstract representation of work that needs to be done.
+During execution, the current value of a task is observable and other tasks can act upon it.
+Furthermore, tasks can be combined and transformed to create compound tasks, allowing the modelling of many collaboration patterns.
+Tasks running on edge devices can intuitively be built from the same \gls{TOP} concepts as the interactive collaborative applications \gls{TOP} was originally designed for, albeit with domain-specific primitives such as sensor and actuator access.