Strategic Programming with Model Interpretation and Partial Evaluation William Cook October 1, 2008 Strategic Programming is a programming paradigm based on factoring programs into general strategies and descriptions of particular application requirements. The descriptions are called models, and they generally describe one aspect of an application. Parser generators (like Yacc) are a prototypical example of strategic programming. My talk focuses on defining the semantics of models using interpreters and compiling models by partial evaluation. One novelty of this approach is the ability to create data abstractions by model interpretation and compile them by partial evaluation. It is possible to define fully-functional applications by a collection of interrelated models for different aspects of a system, including user interface, security, workflow, data abstraction and persistence. I will describe my progress in implementing a software development toolset, called Pummel, to support strategic programming by model interpretation and partial evaluation. Pummel is bootstrapped from scheme, but implemented in itself. Pummel is targeted at information management applications, including desktop, web and distributed services, although it may be applicable to other domains as well.