Research topics
- 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.
- Please also check our Research Booklet 2009-2010 for detailed research topics of each of our researchers.
Mobile Applications: Ambient & Context Oriented Programming
The Copami group focuses on programming language research in Ambient-Oriented Programming (AmOP) and Context-Oriented Programming (COP). 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. COP supports the development of adaptive applications which change their behaviour according to their context. COP treats context explicitly as all computationally accessible information that describes the environment of a program's execution. It provides mechanisms to dynamically adapt application behaviour in reaction to changes in context at runtime.
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.
Model Driven Software Engineering
Model Driven Software Engineering (MDSE) promotes the use of models as primary driving assets in platform and language definition, software design and execution. Modeling allows for better management of large-scale and complex software systems, because models are scoped to specific concerns while abstracting from others. We advance the state-of-the-art in MDSE by conducting advanced research on software modeling enabling developers to model and implement software and to express and verify relevant properties of the software, and by conducting novel research providing efficient techniques and methods to transform, execute and monitor models, to co-evolve models and to check consistency between models.
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 of API migration, automatic parallelization and multi-language refactoring. Finally, we provide support for the understanding of version repositories through advanced visualizations and dedicated query languages.
Virtual Machines
The research of this group focuses on the design and implementation of runtime systems (most prominently as virtual machines) and attempts to raise the level of abstraction at which these are defined. Within this theme, we are currently pursuing three concrete topics. Firstly, we question whether bytecodes are really essential to achieve VM performance, and examine whether abstract grammars are a realistic alternative; secondly, we work on modularization of virtual machines, to allow for variation of the runtime support underlying the interpreter; and thirdly, we attempt to increase the support for concurrency at the VM instruction level, for both shared- and non-shared-memory models.






