This project addresses problems in the design and implementation of interactive program development environments for modern programming languages. These environments are specially designed to aid both novice and experienced programmers in the creation of correct and reliable programs. Particular topics to be studied include: (1) Automatic generation of programming language interpreters from formal specifications. Automatic generation of interpreters speeds their creation and makes them more reliable. In interactive environments, interpreters allow program testing to be intermixed with program creation and editing. (2) Properties of a program, including variable and type declarations, can often be inferred from the body of a program. Such inferencing can eliminate the tedium of inserting, by hand, redundant information. Inferencing can also be used to explore the effects of program changes before they are made. The automatic selection of alternative library routines can also be supported. (3) Traditional programming language design techniques are very slow and error prone. This project will extend interactive programming support tools to the realm of language design, supporting interactive programming language design and evaluation.