Visser This page is not very up-to-date. If you are interested in the general topics on this page, contact me for a discussion on possible new projects
This page lists some ideas for master thesis projects in the areas of program transformation and software configuration management. If you are interested in one of these areas, contact Eelco Visser
for further information.
The program transformation group headed by Eelco Visser
high-level specification methods for program transformations and applications of these
methods to a variety of program transformation problems. The main product of this
research is the Stratego/XT
language and toolset
for program transformation. In the context of this project there are many opportunities for thesis projects. If you are interested in any of these projects contact Eelco Visser
High-level abstractions improve programmer productivity but often at the expense of performance, since compilers do not cater well for such abstractions.
In this line of research we investigate the specification of optimizations for supporting higher-level styles of programming.
There are several ongoing compiler and optimization projects in the context of which projects
- The Helium Optimizer is an optimizer for a functional language in the tradition of the 'compilation by transformation' paradigm, i.e., gradually deriving an efficient program by repeatedly applying transformation rules. The goal of this project is to create an optimizer that is truly based on a set of rules that can be combined in many different ways. A first prototype has already been built, such that a continuation project can start with the interesting stuff immediately
- In collaboration with Philips research and University of Dresden we are building a compiler for Octave (an open source clone ofMatLab). The compiler targets various machines, among which a vector machine under construction at the University of Dresden. The high-level Octave code is usually written for prototyping. In order to be usable on embedded systems it has to be disambiguated and drastically optimized.
- In collaboration with Bernd Fischer at the NASA/Ames research center we are working on an optimzer for the AutoBayes program synthesis system. The system derives high-level algorithms from declarative specifications in the domain of statistical data analysis. The intermediate code produced by the system has many opportunities for optimization. A first prototype optimizer has been written by Karina Olmos and Jozef Kruger.
- In collaboration with the University of Bergen (Norway) we are working on CodeBoost a transformation system for C++ programs, especially aimed at the optimization of numeric programs written in the Sophus style. Many opportunities for adding optimizations, in particular if you are numerically inclined.
- In the paper 'Rewriting Strategies for Instruction Selection' an elegant encoding of instruction selection with dynamic programming is described. As a case study the approach should be further explored by working out a complete instruction selection component for the Tiger compiler based on this approach. Unlike existing tools for instruction selection, this approach is not restricted to low-level code generation, but can also be used for query translation or program synthesis. Furthermore, the highly generic selection algorithm should be optimized itself by specialization to a specific set of rules.
- The Stratego optimizer applies an increasing number of transformations to Stratego programs. Areas for further work include specialization of generic strategies to specific data types and effect analysis.
Rob Vermaas has created xDoc
, a documentation generator, which has been designed to be extensible to different
source languages. Given a source code package, the system produces a web-site giving an overview at different levels. Currently these views include API and code browsing, aided by various indices, cross-references, and import graphs. The system has been instantiated for Stratego and SDF. There are many ways to extend the system
- Instantiate for other languages
- Visualize the connections between programs in different languages
- Visualize the composition of components
Beyond documentation generation xDoc could be used to provide help in refactoring programs. For instance, by giving advice on remodularization.
Types for Strategies
Although Stratego is a typeful language in the sense that it deals with typed and structured
data, the genericity of its transformation strategies is beyond conventional type systems. By now there are proposals for type systems for strategic programming languges.
The goal of this project is to implement a type system for the existing Stratego language using inspiration from the approaches mentioned above. A large set of actual programs exist against which this type system can be validated. Guiding principle should be that the type system helps programmers find errors in code, while not unnecessarily restricting expressivity.
Transparent Configuration Environments
Managing the variability in software systems is rapidly becoming an important factor in software development. Instead of developing and deploying a fixed one-of-a-kind system, it is now common to develop a family of systems whose members differ with respect to functionality or technical facilities offered. Variability is represented conceptually by variation points that identify a set of variants for which a choice or decision can be made at a particular moment--binding time--in the development and deployment cycle of a software system. Depending on the needs of the system's stakeholders, it may be desirable to allow these decisions to be made at several moments in time. This timeline variability is an extra dimension to variability that is often ignored.
In the NWO/Jacquard project TraCE
we are studying the modeling and realization of variability in modern software systems with an emphasis on a more general and generic treatment of timing-issues for variant addition/removal and binding of variation points, the related effects and the opportunities for optimization. The vehicle for the research is the development of a framework for transparent configuration environments which present a uniform interface to a variety of underlying configuration mechanisms, thus closing the current gap between variability at the conceptual and implementation levels.
Various opportunities for thesis projects exist.
Contact Eelco Visser
for further information.
The following sections describe areas with which thesis projects can be associated.
- Variability Modelling: This part of the project is concerned with developing a formalism for describing the variability in software systems in a declarative manner. This involves language design and validation by investigating and modelling actual software systems.
- Software Deployment: Software variability is a complicating factor or software deployment, especially when variability becomes more fine grained. We are developing the Nix deployment system to deal with this problem.
- Component Composition and Integration: Flexibility can be improved by dividing software systems into components. We work on component composition mechanisms such as XTC and methods to integrate (specialize) such compositions.
- Software Logistics: A software logistics environment integrates all aspects of the management of software artifacts, from development, to release and deployment.
- Buildfarm: Part of a logistics environment is a buildfarm for testing software packages on various platforms and in different configurations.