Student Projects

Master

The following projects are all rather summarily stated. More details will become available before the course. Specifically, what it takes to pass the assignment, and what it takes to excel in a given assignment.

Type inference directives

This project may contain any of the following tasks, make a .type file specification for a combinator language, implement type inference decision trees into the Helium compiler, and finally to consider and implement useful abstractions for .type files.

Supervision: tba

Type class directives

Investigate the use of invariants for the class system specified by means of type class directives, based on a paper on this subject. Feasible parts of this specification need to be found and implemented. The Top framework is taken as a starting point, inspiration can be found among tools such as BANE.

Supervision: tba

Repair directives

Repair directives are a new form of specification to have the compiler generate correct versions of a program when a type error occurs. Your task is to try out new transformations, study their effectiveness by applying them to our base of logged programs and determine the right cost functions to obtain the `optimal' solutions.

Supervision: Bastiaan Heeren

Ruler assignment

Tba.

Supervision: Atze.WebHome

Recursion pattern analysis and feedback

Detect recursion patterns in a programs (a recursion pattern that can be implemented by map or foldr) and to generate feedback to a programmer how he can modify his program to use these standard function and obtain the same result.

Supervision: Stefan Holdermans

Interactive feedback for type inference

Build a tool that can answer questions about the type of identifiers in the program, ask the compiler to explain why a type is of a given form, and to explain where the type error can be. The tool should be able to answer such questions for type correct and type incorrect programs. There exsist already tools of this sort, such as Chameleon, which can serve as a source of inspiration.

Error messages for phantom types programming recipe

In case that phantom types (developed by Daan Leijen) are used to encode a class hierarchy, or the relation between a widget and its attributes, details of this encoding are often present in the error messages, and thus do not properly explain what mistake was made. Your task is to improve the situation, within the context of a library such as HaskellDB? or wxHaskell. You will be testing your 'theories' on a lightweight library to keep things simple.

Supervision: Bastiaan Heeren

Empirical study of Helium programs

Together we determine a number of hypotheses about the programming behaviour of students, or the effectiveness of the Helium compiler in providing useful feedback. Using Peter van Keeken's library there hypotheses need to be investigated, by querying our database of logged Haskell programs and finding support for or evidence against a each of the hypotheses.

Supervision: Hage.WebHome

-- JurriaanHage - 12 Jun 2006