## Theme: Task Oriented and Functional Programming

Task-Oriented Programming (TOP) is a new programming paradigm for developing interactive multi-user systems, developed by our department. This programming paradigm uses "Tasks" as central concept.

The idea is that a computer program supports a human in accomplishing a certain task or it can autonomously perform some task. If we can precisely define the task that needs to be accomplished, or can decompose a complex task into smaller simpler tasks, we should have enough information to generate an executable systems out of the description which supports the work thus described. This means that all technical infrastructure of an interactive system (handling events, storing data, encoding/decoding etc.) can be factored out and can be solved generically.

In other words: a programmer can now focus on the main issue: which task does it need to support, and does not need to worry anymore about the technical details to make it work.

A TOP framework provides the following components:

 - A set of predefined generic "task" definitions;
- A set of task combinators;
- A set of predefined generic datasource definitions;
- A set of datasource combinators;


The iTask system we are developing at SWS provides all of these components for the Clean programming language. TOP is offered in Clean as a Embedded Domain Specific Language (EDSL).

### a) Applying TOP in industry (master)

The iTask system is used by industry, mainly for rapid prototyping. We cooperate with professional organizations where many different parties work together intensively, accomplishing complex tasks that are critical and need to be performed timely and correctly. These partners currently are:

 - the Netherlands Coast Guard
they use TOP to prototype their Search and Rescue operations;
- TNO
they use TOP to investigate more efficient ways of working on Navy Vessels
they use TOP to
a) improve Command and Control systems
b) to investigate a general architecture to support mission critical operations.


We are looking for students who want to investigate the applicability of TOP in one of those industrial environments.

### b) TOP Tools (research b, master)

In TOP one can describe arbitrary complex collaborations. But does the resulting system behave as intended ? How can we specify that? How can we measure that? How can we simulate the behaviour and test what is going on?

### c) TOP Parallel Tasks (research b, master)

Our processors do not seem to become much faster anymore. Instead we increase the number of processors heading to a multi-core system. So, why not go for parallel evaluation of TOP tasks as well? This seems obvious, but it is not trivial at all, because task are reactive, and they share information with others. The semantics do not yet take parallel evaluation of tasks into account and assume that task rewriting is an indivisual action. We are looking for students who want to study how tasks can be evaluated in parallel, from a theoretical and/or from a practical point of view.

### d) TOP Games (research b, master)

Playing games is a good example of a collaboration on the net. We have developed a small number of turn-based, n-person games in TOP (tic-tac-toe, trax, Ligretto) to investigate the suitability of the novel paradigm. There are of course many more kinds of games. In this project we investigate these classes of games and study how they can be structured best according to the TOP paradigm.

### e) TOP Drones (research b, new devices lab, master),

Drones and other unmanned autonomous systems, e.g. robots are now affordable for mass markets. "Tasks" are a common notion in robotics. We would like to know how this task notion relates to the concepts of the Task-Oriented Programming paradigm and if TOP would be a suitable paradigm for programming drones. You can pursue this problem theoretically by literature study and further formalization of the concepts in both field,s or take a more hands-on practical approach. In that case we have a very hackable consumer drone (http://ardrone2.parrot.com/) available for your experiments.

### f) TOP in Haskell? (research a/b, master)

Currently, TOP is only available for Clean, although there is limited implementation in Erlang. It is not easy to make an implementation of TOP. The Clean implementation makes use of very advanced techniques, such as dynamics, generic programming, and the like. While Haskell and Clean are very similar, there are differences in the advanced language features they support. We are looking for an MSc student who wants to research the differences and similarities between Clean and Haskell in the context of iTasks. We are looking to answer the following research questions:

•  Which parts of iTasks cannot be implemented in GHC and why?
•  Which parts of iTasks can be implemented in GHC with an alternative approach?

### g) TOP IDE (research b, master)

New paradigms always lead to new insights of old problems. This also holds for TOP. In this project we investigate how TOP programming can improve on the structure of Integrated Development Environments (IDEs). IDEs are an interesting case study because they merge several heterogeneous technologies into one system: external applications need to be coordinated (compilers, type-checkers, parsers, file system managing functions), they are typically interactive (GUI), and there is the opportunity to distribute work (multi-user, version control).

### h) TOP Graphical User Interfaces (research a/b, master)

Many scientific proposals have been developed to write Graphical User Interfaces in functional programming languages. The level of abstraction and composition of these approaches vary a lot. For Task Oriented Programming we are developing a new approach that is compositional and abstract. In a (bachelor or master thesis) project you can perform a literature study and compare and analyse these approaches, or design and implement a new approach that merges seamlessly within Task Oriented Programming.

### i) TOP and Dependent Types (master)

Arbitrary complex collaborations can be expressed in TOP. The disadvantage of such expressive power is that it is not easy to state properties of tasks that can be verified statically. On the other hand, type systems are becoming more powerful as well. Haskell has recently been extended with a restricted version of dependent types. Can such dependent types be of any help for stating static properties of TOP tasks?

### j) TOP using New Devices (research b, new devices lab, master)

New devices like smart phones and tablets have gained a large popularity in a few years and have an enormous impact on our life. However, this is only the start. There is a large number of gadgets under development; wearable devices (like smart glasses and smart watches), drones, 3D-printers and ordinary devices like light bulbs and thermostats connected via the internet to other devices. In TOP one can, in principle, specify the collaboration between devices without worrying about graphical user interfaces, communication, and collaborative behaviour. We want to study how TOP can be used for developing collaborative applications on new devices like Google glass, smart watches, drones, and the like.

### k) Testing and Education (research b, master)

The bachelor course Functional Programming consists of quite a large bundle of exercises. To aid the student-assistents in marking student-submissions, we have developed test-suites for a part of these exercises. The test-suites are executed by the Gast test tool. There are several interesting research questions in this project. Here are some of them. At what stage can the test-tool be offered to students when working on their assignments? Does the availability and use of the test-tool improve the quality of their submissions? How can the test-tool best be integrated in the programming IDE that is used?