Programming Language Research at Kansas State University
Automatically customizing adaptable software using partial evaluation
Our primary research project involves using partial evaluation
techniques to automatically customize adaptable software written
in modern imperative programming languages.
(Here is a brief
overview of partial evaluation if you have not already read
it.)
In complex real-world systems, software requirements are constantly
evolving. This demands methodologies for designing reusable,
adaptable, customizable software, and associated technologies
for modifying, transforming, and customizing programs and
specifications.
Partial evaluation is an automatic tool for program
specialization, customization, and optimization. It thus provides the
foundation for a novel paradigm of adaptable software construction and
instantiation.
Despite successful applications, current partial evaluation
technology is unable to satisfactorily treat modern imperative
languages that include object-oriented, multi-tasking, and
exception-handling features.
The goal of our research is to scale-up partial evaluation
technology to handle modern language features, and
through experiments with specializing large real-world software systems,
develop methodologies for constructing and customizing
adaptable software using partial evaluation.
There are a wide range of research topics in this project for students
interested in doing a M.S. or Ph.D. thesis.
- Static analysis: Partial evaluation tools employ a variety
of sophisticated static analyses. There are several possible thesis topics
including
- design and implementation of static analyses for object-oriented or
concurrency features
- formalization and verification of correctness of the above static
analyses
- design and implementation of tools for constructing various
analyses
- Compiler and interpreter tools: Partial evaluators incorporate
both interpreter and compiler components. Possible topics include
- design and implementation of code generation components
- design and implementation of interpretive components
- design and implementation of memory management systems
- Experimentation and validation: Many experiments are
need to guide development and validate constructed systems. Possible
topics include applying partial evaluation to specific application domains
and assessing the results.
Our research group maintains strong collaborative ties with researchers
from Kansas State University and two Danish universities: University
of Copenhagen, and University of Aarhus. These ties provide
interesting opportunities for students to interact with researchers
outside of OSU.
We are involved in several ways with the
programming language research
group at the University of
Copenhagen. Currently we are applying the C-Mix partial
evaluation (a partial evaluator for ANSI C) developed at Copenhagen
(currently supported by Peter Holst Andersen under supervision
of Neil Jones). We also collaborate on other partial evaluation topics with
Robert Glueck, on CPS transformations in pure type systems with
Morten Heine Soerensen, and on transformations for higher-order logic
programs with Henning Niss.
Finally, continue to have extensive collaboration with
Olivier Danvy from
Aarhus University on program transformations for functional programs.
While we focus on partial evaluation, there are other possibilities
for thesis topics in the areas of operational semantics,
continuations, logics and type theory, logical frameworks.
We are especially interested in
different approaches for formal machine-assisted verification of
programs and program transformations,
For more information about research in partial evaluation and
programming languages at Kansas State,
contact John Hatcliff.
John Hatcliff (hatcliff@cis.okstate.edu) January 7, 1997.