IU Programming Languages Research
Current programming language research at IU explores a variety of semantic
and pragmatic issues and their relation to other areas of theory and
The work of Kent Dybvig, Dan Friedman, Amr Sabry, and Chris Haynes
focuses on functional, object-oriented, dynamic, and symbolic programming
mechanisms, often expressed via extensions and derivatives of the Scheme
This work often involves formal methods of static program analysis,
such as partial evaluation, abstract interpretation, and type systems.
Through such methods, and imaginative engineering, one hopes to combine
expressive abstraction mechanisms and efficient execution.
A number of faculty have interests that tie programming language research
with other areas of research.
- Dennis Gannon explores aspects of programming language design related
to parallel and scientific computation.
- Steve Johnson uses transformation techniques developed for programming
languages in the formal
derivation of hardware
- Daniel Leivant has worked on logics of programs, and on applicative
programming languages that capture computational complexity classes.
- Dirk Van Gucht works on the theory and design of query languages for
database systems that maintain complex objects such as structured
documents, multi-media objects, and geometric data.
- David Wise is developing applicative programming for parallel
processing, including compile-time and run-time memory management,
using software and hardware support, and reformulations of algorithms
that map well onto generic multiprocessors.
The Scheme Programming Language, Third Edition
The entire text, online.
Essentials of Programming Languages
Information, errata, and other materials related to this book.
- Scheme and the Art of Programming
The code given in the book is available via anonymous
- Syntactic abstraction
- We have developed a powerful syntactactic abstraction system for
Scheme that is
compatible with the high-level macro system in the Revised^4 Report
abstraction in Scheme (LASC, 5(4), 1993) justifies
the system and places it
in perspective with other existing macro systems.
Documentation can be found in either
The Scheme Programming Language
The Chez Scheme User's Guide.
The technical report
hygienic macros using syntax-case also describes the system.
We have extended the system to support modules; this work is
described in the paper
the Scope of Syntactic Abstraction.
implementation, based on the implementation used in
Chez Scheme is also available.
Educational infrastructure (EI) project
- This project involves developing software tools and pedagogy
for using Scheme in the undergraduate curriculum.
This project supported, among other things, the development of the
Scheme Widget Library.
- Scheme Widget Library
- The Scheme Widget Library is a windowing and graphics library for
Scheme supported by NSF through EI project.
The most recent version can be downloaded from
- Memory management
- This includes garbage collection, but more generally this encompasses
all aspects of managing memory in run-time systems that dynamically
allocate heap storage. There is a
report that describes our system.
We also have a paper on
which is a
language feature that allows objects to be saved from automatic
deallocation so that clean-up or other actions can be performed on them.
- Scheme implementation
- In addition to our work on memory management and syntactic
abstraction, we are continually investigating other facets of Scheme
implementation. Some papers on our work include
Kent Dybvig is also the principal developer of the commercial
implementation of Scheme.
Many of his students have contributed to its development.
More information, including the complete text for the
Chez Scheme User's Guide and a download area for
Petite Chez Scheme, a free interpreter-based version of
Chez Scheme, can be found at
- A compiler architecture for dynamically optimizing stand-alone
programs. Dynamic optimization uses run-time values and invariants to
improve code as it executes, yielding performance that is often
superior to that of statically optimal code.
- The Scheme
- IU maintains the Scheme Repository that used to be at York University.
There is a list of its
- Integrated parallel Scheme architecture
- A scalable multiprocessor architecture for efficient execution of
- Infer is a statically-typed dialect of Scheme.
- pC++ is a portable parallel C++ for high performance computers. It is a
language extension to C++. Sage++ is an object-oriented compiler preprocessor