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