Software usually works with
structured information; think of Web-browsers and HTML-documents. This
structure can be represented by a data type, a DTD (Document Type Definition),
or a model. If such a type changes, all programs that work on that type have to
be changed too, although often the central problem does not change.
In the course on generic
programming we will discuss methods with which problems can be formulated and
solved for arbitrary data types, DTDs, or models. In
a sense, this is a course on model-driven development, but the model is a type.
The result is a generic program. An example of a generic program is a program for developing web shops: given the structure of the product you want to sell,
you want to generate web forms, and database transactions based on this
structure. By specialising to a given type we get a
normal, type-specific program. Many design patterns are also instances of
generic programs. In contrast with MDD methods, or design patterns, the focus
of this course is on types, which gives many possibilities for constructing
correct and abstract code, based on sound theories.
In the course we will
discuss generic programming by means of a number of example problems. You will
also see some basic lambda calculus, which can be used to type-check and specialize generic programs. We
will use both a couple of generic programming libraries for Haskell and the
programming language Generic Haskell, an extension of Haskell that supports generic
programming.
http://www.cs.uu.nl/education/vak.php?vak=INFOGP&jaar=2008