Thesis Project
Master
The Master Program Software Technology is concluded with a thesis project (45 ects). The project involves an exercise in scientific research and results in a Master's thesis. Projects can be done externally or internally.
Here are some useful information related to getting your thesis project started:
- Finding a topic. Here are some tips. We try to maintain a list of our current research areas, see below.
- Planning your thesis project : procedures, milestones, and tips.
- Final steps to your thesis defense.
- You also need to register for your final exam; check out the procedure here.
For general information about graduating in the ST Master Program contact prof. dr. Doaitse Swierstra.
List of Current Research Areas
External projects are done in companies such as SERC (Afstudeeropdrachten), Philips Research Laboratories, De Belastingdienst, Software Improvement Group, Ordina, and Baan. Internal projects are done at the Center for Software Technology in close collaboration with one of the research projects of the Software Technology Group. Below a general description of the research areas is given. Some include links to projects within the area, else feel free to approach the contact person mentioned to find out whether a project in the area is available and would be of interest to you.
Advanced Functional Programming
Besides developing new programming languages, building compilers, and thinking about type systems, we also think that one of our tasks is to demonstarte how functional programming languages, and especially Haskell, can be applied in real-life situations. By using languages to build actual systems, we get insight in their strengths and weaknesses. So under this heading we have identified a number of problems which can be worked on separately, without having to delve deeply into compilers of type systems. Some projects merely apply Haskell in a new application area, or are aimed to show how to do things "differently". Examples of such projects might be the use of partial evaluation in building support systems for designers of Bayesian networks, applying incremental evaluation techniques, or designing some (Embedded) Domain Specific Language
Contact: anyone in the ST group
Compiler Tools
There are various projects possible in the design, implementation and application of functional compiler components such as attribute grammars, parser combinators, and virtual machines. Areas of particular interest are efficient machine models, use of program analysis techniques from the attribute grammar world in the optimized implementation of functional languages, program refactoring and componentized attribute grammar systems. In general we try to operate in a fully typed world, and as such this research provides ample inspiration for thinking about what type systems can do in checking the correctness of your model and implementation.
Contact: Prof. Dr Doaitse Swierstra, Dr Atze Dijkstra, Drs Jeroen Fokker
Generic Programming
Generic programming is about making programs more adaptable by making them more general. Generic programs often embody non-traditional kinds of polymorphism; ordinary programs are obtained from them by suitably instantiating their parameters. In contrast with normal programs, the parameters of a generic programs are often quite rich in structure. For example they may be other programs, types or type constructors, class hierarchies, or even programming paradigms. At Utrecht, generic programming has been studied since the end of the nineties. We have worked on Generic Haskell, a generic programming language extension of Haskell, on several domain-specific libraries for generic programming, and on applications of generic programming. We have created a separate page for ideas about
thesis projects on generic programming.
Contact: Prof Dr Johan Jeuring
Program Analysis
Before optimizing transformations can be applied to computer programs, it is first necessary to analyse a program to compute various properties of a program. For example, a compiler only needs to generate code for lines that can be reached from the beginning of the program. However, it is not always obvious whether some part of the code is reachable or not. Another example is type checking and type inferencing. This is also an analysis of a program, which should lead to more efficient generated code. In both cases it also gives some idea of the correctness of the program.
Another application of automatic program analysis has to do with verifying that written code adheres to certain programming guidelines. For instance: in a company people might be wary of memory leaks. For this reason, there is a programming guide line that says that memory allocated in a given procedure ought to be released before the end of the procedure.
The basic idea of program analysis is to compute information from programs automatically in finite time. In many cases we run into the limits of what is computable (like the Halting Problem), so our answers will only be approximate. We do generally insist that answers are sound: if some definite answer is given, then it must be true. However, in some projects this demand was relaxed,
for example in a recent project on soft typing of PHP.
Projects in this theme will typically involve developing and implementing one or more analyses for a programming (or other) language (Java, Python, Scheme, Haskell,...). In case a parser is not yet available, constructing a parser will be a part of the assignment. In the choice of subject language and type of analysis there is potentially a lot of freedom.
Contact:
Dr. Jurriaan Hage
Proxima: A generic presentation-oriented XML editor
The Proxima project is concerned with the design and development of a generic presentation-oriented XML editor. Proxima can be used for arbitrary XML document types, described by DTDs or Schemas. The two most important features are
- support for specifying editable presentations of documents
- support for specifying computations.
Topics on which you can write a thesis:
- Develop two or more instances of the generic editor in order to find patterns that often occur in the specification of editors. Develop a small (embedded) language for specifying editors;
- Develop an editor for Learning Design: an XML Schema for specifying digital learning material.
Contact: Prof Dr Doaitse Swierstra, Dr. M. Schrage
Projects related to software testing
There are currently several projects open,
check them out here.
Contact persons:
Dr Wishnu Prasetya
Projects at Philips Research Eindhoven
At Philips Research, we have a number of projects in the field of sensor-based toys. These projects involve language design and/or software architecture. See
ESPeranto.pdf for further details.
Contact persons: Prof. Dr Doaitse Swierstra,
Drs Robert van Herk