Programming Languages

Northeastern University’s Programming Research Laboratory (NUPRL) boasts experts across the entire spectrum of programming language research: compilers, interpreters, language design, run-time systems, static analysis, semantics, and type systems.  Its members work on a wide range of programming languages, ranging from expressively typed languages to dynamically typed scripting languages and from purely functional research languages to industrial object-oriented imperative languages. They also reach out to other areas, especially software engineering and the pedagogy of teaching programming.

NUPRL’s researchers aim to improve the lives of working programmers and software engineers but also the ultimate consumers of software. The latter wish to use efficient, reliable, and secure software products, while the former need techniques, tools, and teachings to satisfy the consumers’ demands.

The lab is the source of some of the most important advances in the theory and practice of programming languages. Its members developed and investigated

  • the most widely used proof methods for type soundness, abstraction, and representation independence theorems
  • numerous novel typing mechanisms, e.g., occurrence typing, ownership types, row types
  • higher-order control flow analysis (kCFA)
  • hygienic macro expansion
  • behavioral software contracts
  • reduction semantics, popularly known as “evaluation context” semantics
  • the first fully abstract denotational semantics of a sequential language

Its senior members have run major programming language systems implementation efforts, including

  • the COMINT modules for the EMACS editor
  • the DrRacket IDE
  • Larceny Scheme, its Twobit compiler and run-time system
  • the Ovm and Fiji Java virtual machines
  • Racket and Typed Racket, widely used derivatives of Lisp and Scheme
  • SCSH, one of the first shell scripting languages
  • VLisp, one of the first fully verified language implementations

The members of NUPRL are also committed educators in programming and programming languages. Its members have authored

  • Essential of Programming Languages, which changed the landscape of programming language textbooks
  • How to Design Programs, which represents a radically new approach to introductory programming
  • The Little Lisper and its fellow “Little” books
  • Semantics Engineering, a graduate text on language modeling

In addition, NUPRL’s Felleisen inspired Realm of Racket, a programming book for the Racket language, designed and authored by a group of freshman students.  Finally, for the past 20 years, Felleisen and his PLT colleagues have run the Program by Design and Bootstrap K-12 outreach projects formerly known as TeachScheme!.

The lab’s professors have chaired or served on all the flagship conferences in their research areas COORDINATION, ESOP, ECOOP, ICFP, OOPSLA, PLDI, POPL, and VEE.

PhD students and post-docs from this lab hold positions at major research universities, including Brown, Florida International, Indiana, Maryland, Northwestern, U Utah, UC Santa Cruz, and U Waterloo as well as well-known industrial research labs such as Intel, Microsoft, Mozilla, and Oracle.

NUPRL gratefully acknowledges financial support from government agencies—AFOSR, DARPA, NSF, ONR—and industrial sponsors—Cisco, CORD, Google, Intel, Microsoft, Mozilla, and Oracle/Sun Microsystems.

For information about the Programming Research Laboratory, please click here.