Topics

Printer-friendly version

This page gives you an overview of the various topics that are actively researched at the Software Languages Lab.
The topics often overlap with each other, and many researchers are active in more than one topic.

Languages for Ambient and Distributed Applications

The Lambda group consists of a number of sub-groups that focus on research related to participatory sensingambient-oriented programming (AmOP), programming for the cloud & Internet of Thingsreactive programming and type systems.

  • Participatory sensing provides the enabling technology to deploy so-called citizen observatories. Our research is centred around the notion of orchestrating participatory sensing campaigns, more specifically we want to provide configurable construction tools that enable domain experts (but non-ICT-experts) to specify campaigns.

  • In AmOP, programs operate in mobile environments where connection failure is the rule rather than the exception, e.g. smart phones or tablets connected over a wifi network. This requires new programming techniques to reference and discover remote entities, abstractions to coordinate and interact with remote parties over volatile connections and finally, replication techniques to increase data availability. Today, the Lambda also group specialises in the cloud, research that is the result of an evolution from ambient-oriented programming to full-fledged web applications.

  • A subgroup of Lambda focuses on the internet of things, where computing power is introduced into everyday objects that will enable them to communicate with one another and with more traditional computers. We mainly look into event-intensive software systems where the crux of the problem lies in the volatility and massiveness of the information produced.

  • The reactive programming paradigm is a paradigm that is generally accepted as well suited for the development of event-driven and interactive applications. Our research in this field is twofold. On the one hand we are focusing on making the reactive programming paradigm accessible for imperative, mainstream languages. On the other hand we are focusing on distributed reactive programming, meaning that we want to distribute the data dependencies over multiple machines/hosts.

  • The Lambda group has a subgroup that specialises in type systems for parallel and distributed computing. The type systems which are being researched in our group can verify complex invariants of the system. The advantage of making use of state of the art static type systems is that the programmer can write more robust software which runs faster. The work around type systems is materialised in a novel programming language called LollyScript.

Goto topic page

Parallel Programming, Multicore Programming & Exascale Computing

This theme focuses on language design and implementation for multi- and many-core platforms. We are interested in refining existing parallel programming models (actors, software transactional memory, data parallelism etc.) as well as optimizing virtual machines, interpreters and compilers. Additionally, we work on application-specific solutions, e.g., for quantum computing. What sets us apart is the fact that most of our research is done in the context of dynamic languages like e.g. Common Lisp and Smalltalk.

Furthermore, we host our own many-core lab. Thus, we are equipped with a wide range of different systems to experiment with state-of-the-art architectures to validate our research results.

Goto topic page

Code Analysis and Manipulation

CAMP groups together people involved with the theory and practice of source code analysis and manipulation. Our research advances the state of the art along three main axes. The first axis considers multi-language systems. Analyses need to consider the impact that annotations as well as embedded domain-specific languages have on the semantics of the host program. The second axis considers the analysis of highly dynamic languages such as Javascript and Scheme. Here, the semantics of higher-order procedures with side-effects have to be taken into account. The third axis considers multiple versions of code in an analysis. Here, the state of the art is challenged by the scale of version repositories and the complexity of the temporal relations between versions. Along these axes, our analyses provide a solid foundation for the validation, transformation and understanding of software systems. We support validation by identifying bug patterns and violations of architectural regularities in code. We apply software transformations to the problems ofAPI migration, automatic parallelization and multi-language refactoring. Finally, we provide support for the understanding of version repositories through advanced visualizations and dedicated query languages.

Goto topic page

Rich Internet Applications

This team focuses on language design and implementation for rich internet applications. There is an increasing demand for web-based services that offer collaborative and off-line functionality. Realizing these qualities brings about a number of essential complexities. This team focusses on aleviating these complexities through novel language abstractions and frameworks. In this field our research advances the state of the art along four main axes. The first axis focusses on the design of tierless programming languages to enable developing the typical server, client and database tiers of a web application as a single mono-linguistic program. The second axis considers maintaining consistency of shared application assets that can be used by clients both off- and on-line. For this topic we advance research on Cloud Types and other eventual consistency mechanisms. A third axis considers safeguarding the security guarantees on the integrity and confidentiality of critical parts of the application data and functionality. For this aspect we focus on programming constructs for implementing confinement-related security policies. A fourth axis considers the specification of constraints on web APIs. There is currently often only a textual version of an API specification. For this work we focus on the development of machine-readable API specification that allows API providers to explicitly list the parameters of a request and their constraints together.

 Goto topic page