These projects are currently available. All these projects have the potential to lead to a scientific publication.
Various external projects at Software Improvement Group in Amsterdam and at Vector Fabrics in Eindhoven. Both will involve implementation, the former company being mostly interested in issues such as measuring maintainability, and the latter company more focused on parallellizing C code. For Vector Fabrics I am looking in particular for someone well-versed in both static analysis and combinatorial optimisation. Inquire for further topics.
Object sensitivity: following a recent paper by Smaragdakis et al., you shall apply the ideas of object sensitive analysis to dynamic languages. Depending on your background, there is an implementation of approximate/soft typing for PHP or Python ready and waiting to be extended. Taken by: Henk Erik van der Hoek Difficulty: medium Supervision: Jurriaan Hage
Static analysis of dynamic languages: as a result of previous master thesis and experimentation projects, I currently have two dataflow analysis implementations of soft typing, one for Python and one for PHP (both in Haskell). Since these have both been implemented by means of monotone frameworks, an extension to other static analyses that use the same framework is natural to consider. There is much room in these projects for choosing your own directions. For example, we may consider the problem of verifying that certain protocols are followed in PHP code, e.g., to guarantee that a database connection is opened correctly before sending a query there. Difficulty: medium Supervision: Jurriaan Hage
Optimising Shockwave Flash code: As part of the Fittest project in which I and Wishnu Prasetya are involved, we have built a large framework for transforming Flash bytecode. Although the initial goal of this work is to allow us to inject logging code that can be used to generate models of the application and the liek, the same infrastructure can be used to optimise Flash code by optimisation. We already have quite some ideas where opportunities for such optimisation arise, and your first task will be to implement these and determine their effect. Along the way you will most probably stumble upon many other opportunities of this kind. Difficulty: medium Supervision: Jurriaan Hage and Wishnu Prasetya
Domain specific error messages for EDSLs in Haskell 2010: In our paper on the subject (ICFP 2003) we describe a method for influencing the type inference process by explicitly ordering constraints and giving tailormade (domain specific) error messages (for certain expressions). This work was done for Haskell 98, and I want to see this work extended to a larger fragment of Haskell 2010. If Haskell's advanced type system is your thing, then be sure to apply. Difficulty level: medium to high Supervision: Jurriaan Hage
Heuristics for improving Java (type) error messages: You continue the work by Nabil El Boustani (Get thesis) to extend the type inference mechanism (and possibly other parts of the language) of the Extensible JastAdd compiler in order to improve error messages (beyond what ejc and javac offer). Your task is to develop new heuristics, implement, verify them and validate them. Implementation is done purely in Java and uses the Jastadd attribute grammar system developed by others (Hedin et al.). Our first focus will be on the generic part of Java. Difficulty level: medium Supervision: Jurriaan Hage