Description:
============
Program specialization, also known as partial evaluation, is an
automatic tool for program optimization, similar in concept to but in
several ways stronger than a highly optimizing compiler. It is a
source-to-source staging transformation: a program $p$ together with
partial data $s$ are transformed into an often faster specialized
version $p_s$ by precomputing parts of $p$ that depend only on $s$.
The possibility, in principle, of partial evaluation is contained in
Kleene's classical s-m-n theorem.

Specialization is worthwhile when $p$ runs for a long time, and $p_s$
is significantly faster than $p$. Suitable problem types include:
Highly parameterized computations that use much time consulting
parameters, but are often run using the same parameter settings;
programs with many similar subcomputations; programs of a highly
interpretive nature, e.g., circuit and other simulators,
where specialization removes the time to scan the object being
simulated; database query search algorithms; and meta-programming,
where a problem is solved by designing a user-oriented language and an
interpreter for it.

Partial evaluators have been successfully applied to generate
efficient specialized programs for ray tracing, for the Fast Fourier
transform, and for circuit and planetary simulations. Partial
evaluators have also been used to compile using interpreters for
programming languages and to generate compilers from interpreters.

The DIKU International Summer School '98 on Partial
Evaluation offers a practical introduction to several existing partial
evaluators, including the opportunity for guided hands-on experience,
as well as the presentation of some more sophisticated theory,
systems, and applications. Lectures will be given by some of the
leading researchers in the field.

The summer school runs for two weeks. The first week is practically
oriented, focusing on a number of partial evaluation systems, mainly
developed at DIKU. The second week combines practical
experience with more sophisticated theory, systems, and applications.
It is possible to follow each of the two weeks on its own.