This distinguished group has led some of the most important advances in the design, implementation and analysis of programming languages. Members of the research group ensure that programs have the robust languages they need to produce more reliable, manageable, secure and efficient programs.
They draw on extensive experience in implementing compilers, static analyses, optimizers and run-time systems to address the performance challenge of scripting languages. The group’s research focuses on modeling programming languages to predict how programs will function; creating efficient and reliable macros, logical relations, language-based security and security-preserving compilation; and developing techniques that allow programmers to adapt programming languages to the needs of specific programs.
The programming languages group is also interested in pedagogy and has special expertise in Scheme and its implementations. The group is active in language development and standardization efforts, and in pedagogic projects, including TeachScheme.
For information about the Programming Research Laboratory, please click here.
- Awarded a DARPA (Defense Advanced Research Projects Agency) grant as part of an effort to design new computer systems that are highly resistant to cyber attacks by developing bug-free, secure technology using new programming languages that enable programmers to write large, complex software
- Received a National Science Foundation grant to pursue formal study of software contracts in presence of state
- Created the Racket programming environment
- Developed Larceny, a high-performance Scheme implementation for scientific applications
- Participated in the invention of hygiene, a technique for ensuring that macros don’t interfere with one another
- Developed the Scheme Shell (SCSH), a widely used systems programming and scripting environment that runs on any generic Unix platform
- Authored the “comint” family of interactive process-management modules for the emacs text editor
- Pioneered the use of contracts to check the validity of data flowing into and out of software components and extended this idea to complex, intercommunicating programs and multi-language systems in which each component must guard itself against errors in other components
- Created mathematical models of computer programs that allow deisgners to predict significant properties of their program and safely transform a program into a more efficient program
- Pioneered the form of modeling known as higher-order flow analysis