We are exploring the design and implementation of next generation programming languages to support intelligent, adaptive, complex software systems.

In order to implement dynamic, adaptive software systems, programming languages must support reasoning about their own structure, performance, and environment (often called "reflection"). Furthermore, there must be support for dynamic modification of behavior (think self-modifying code, or a "mutable MOP (Meta Object Protocol)"). Finally, this should all be efficient; in particular, code that does not make use of self reflection or modification should not take a performance hit.

Our research group takes inspiration and motivation from the broad field of artificial intelligence, which is always pushing the boundaries of what can be accomplished with computation, and we apply research from the fields of programming language design and implementation.

Our primary focus is on dynamic object-oriented programming languages, such as Dylan and CLOS. We are also actively pursuing research in Aspect-oriented programming.