Khoury faculty member Jonathan Bell (center) sits in a chair at a large table while talking to a student (right). Another students stands next to Jonathan. The group is discussing a presentation slide projected on a large screen.

Programming Languages at Khoury College of Computer Sciences

Advancing the understanding of how people harness the power of computing

Northeastern University’s programming languages group has made lasting contributions that span both the theory and practice of computing. Their work has established the mathematical foundations that define how programs behave and how programming errors can be prevented, while also producing widely used languages, compilers, and educational resources. Over the decades, they have helped standardize influential programming languages, authored widely used textbooks, and pioneered innovative teaching approaches that bring computer science concepts to learners of all ages. Today, the group’s research extends into areas like secure compilation, software verification, probabilistic programming, and AI-assisted programming.

Programming languages research over the years

  • 2023: Joshua Gancher and collaborators define a core calculus for equational proofs of cryptographic protocols. This provides a foundation for machine-checked verification of cryptographic systems.
  • 2021: Coşku Acay, Rolph Recto, Joshua Gancher, Andrew Myers, and Elaine Shi present Viaduct, a compiler for secure distributed applications. It automatically selects cryptographic protocols to implement high-level programs.
  • 2020:  Steven Holtzen, Guy Van den Broeck, and Todd Millstein introduce Dice, a probabilistic programming language with scalable exact inference. It bridged PL and AI by using knowledge compilation.
  • 2014:  James Perconti and Amal Ahmed introduce multi-language semantics for compiler verification. This enabled verified separate compilation and secure interoperability.
  • 2012:  Jan Vitek helps establish artifact evaluation at PL conferences. This transformed reproducibility standards across the field.
  • 2010:  Jan Vitek and his students do pioneering work on benchmarking the performance of real-world JavaScript. This work influences the design of modern JavaScript JIT compilers.
  • 2010:  Arjun Guha, Claudiu Saftoiu, and Shriram Krishnamurthi present LambdaJS, a core calculus for JavaScript. It enabled rigorous reasoning about JS semantics and security.
  • 2009:  Leo Meyerovich, Arjun Guha, and collaborators release Flapjax, a reactive web programming language. It pioneered functional reactive programming in JavaScript.
  • 2008:  Sam Tobin-Hochstadt and Matthias Felleisen introduce Typed Scheme, a practical implementation of gradual typing for a dynamic language.
  • 2006:  Amal Ahmed introduces step-indexed logical relations for reasoning about mutable state and recursion, which are now a fundamental tool for reasoning about programming language semantics.
  • 2002:  Robby Findler and Matthias Felleisen introduce higher-order contracts. Their system of blame assignment influenced runtime verification and gradual typing.
  • 1999–2000:  Olin Shivers authors early SRFIs, standardizing Scheme’s list and string libraries. These became foundational libraries for Scheme implementations.
  • 1998:  James Noble, Jan Vitek, and John Potter propose ownership types, a type discipline for controlling pointer aliasing. Will Clinger formalizes proper tail recursion, clarifying Scheme’s semantics and influencing other languages.
  • 1995:  Matthias Felleisen and his students release DrScheme (later Racket). It pioneered language-oriented programming and becomes the foundation for widely used computing curricula.
  • 1992:  Daniel Friedman, Mitch Wand, and Christopher Haynes publish the first edition of Essentials of Programming Languages. Its interpreter-based pedagogy transforms PL education and the book remains widely used.
  • 1991:  Will Clinger and Jonathan Rees publish Macros That Work, extending hygienic macros to full Scheme syntax. Matthias Felleisen and Andrew Wright introduce progress and preservation for type soundness, now the textbook proof method.
  • 1988:  Olin Shivers introduces CFA, the first control-flow analysis for higher-order languages.
  • 1987:  Mitch Wand presents complete type inference for objects. This bridged functional and object-oriented type systems.
  • 1986:  Eugene Kohlbecker, Daniel Friedman, Matthias Felleisen, and Bruce Duba introduce hygienic macros, the foundation for the Scheme macro system and a key feature of macros in many other languages.
  • 1984:  Will Clinger publishes The Scheme 311 Compiler, showing how denotational semantics can guide compiler design. This influenced later optimizing Scheme implementations.

Sample research areas

  • Statically typed, array-oriented programming languages
  • Probabilistic programming languages
  • Languages for cryptographic protocol design and implementation
  • WebAssembly
Four Khoury students and researchers smile while having a conversation in a classroom.
Khoury faculty member Jonathan Bell (right) stands in a server room with two students.

Current project highlights


New approaches for software testing
Khoury researchers are helping create a new foundation for how software is tested for reliability, security, and safety including using AI methods to automate aspects of testing. These approaches promise increased speed and scale but also present formidable technical challenges.

Related labs and groups

Faculty members

  • Amal Ahmed

    Professor, Associate Dean of Graduate Programs

    Amal Ahmed is an associate dean of graduate programs and a professor at Khoury College. Her programming languages research has touched on semantics, type systems, secure compilation, gradual typing, and software contracts.

  • Jonathan Bell

    Associate Professor

    Jonathan Bell is an assistant professor at Khoury College. His research focuses on automated approaches to help developers write better software, particularly in Java and JavaScript.

  • Matthias Felleisen

    Trustee Professor

    Matthias Felleisen is a trustee professor at Khoury College and an oft-awarded, 40-year scholar in programming languages and software engineering. Among other contributions, he has developed a K–12 math and programming outreach project, the Racket programming language that supports it, and a widely used theoretical framework for modeling programming languages.

  • Joshua Gancher

    Assistant Professor

    Joshua Gancher is an assistant professor at Khoury College. His research into cryptographic software and formal methods seeks to mathematically verify the security of foundational software, and to create tools to do that process at scale.

  • Arjun Guha

    Associate Professor

    Arjun Guha is an associate professor at Khoury College. His programming languages research addresses security and reliability problems in web programming, systems, and robotics.

  • Steve Holtzen

    Assistant Professor

    Steve Holtzen is an assistant professor at Khoury College, affiliated with the Programming Research Laboratory. His research aims to design fast, accessible, and useful probabilistic modeling systems for everyday reasoning tasks, and he teaches courses on artificial intelligence, programming languages, and machine learning.

  • Chris Martens

    Associate Professor, Jointly Appointed with College of Arts, Media and Design

    Chris Martens is an associate professor at Khoury College, jointly appointed with the College of Arts, Media and Design. A recipient of the NSF Career Award in 2019, they research the design of elegant computational abstractions for interactive and generative software, especially creative applications such as generative art and games.

  • Daniel Patterson

    Assistant Teaching Professor

    Daniel Patterson is an assistant teaching professor at Khoury College. He is particularly interested in the first few years of a computer science curriculum, and uses his background in programming languages, logic, and specification to help students with no experience in computer science establish a strong grasp on the fundamentals.

  • Olin Shivers

    Professor

    Olin Shivers is a professor at Khoury College. By focusing on the interaction between systems and higher-order typed programming languages, he can assist programmers in building robust, complex software.

  • Frank Tip

    Professor

    Frank Tip is a professor at Khoury College and a former researcher with IBM and Samsung. He studies a host of software engineering and program analysis topics, including the use of program analysis in tools that make programmers more productive and software more reliable.