Task Oriented and Functional Programming Lab
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:
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).
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:
We are looking for students who want to investigate the applicability of TOP in one of those industrial environments.
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?
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 tasks 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 individual 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.
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.
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 hackable consumer drone available for your experiments.
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?
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).
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.
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?
New devices such as 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 such as Google glass, smart watches, drones.
The bachelor course Functional Programming for AI uses 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?
If you would like to join the project, feel free to contact our local coordinator, Peter Podlovics at: email@example.com