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

Programming languages are the most fundamental interface between people and computers. From the first languages developed during the 1940s to program a single machine for a simple calculation to the extraordinary variety of languages and programmable systems we use today, understanding what programming languages are and how they work has been key: not only to tapping their extraordinary power, but also in providing a way for programmers to learn their craft, understand their work, and communicate with one another.

Khoury researchers explore the rich diversity of programming languages and the many contexts in which they are used through interdisciplinary approaches – theoretical computer science, experimental methods, engineering design, pedagogical contexts for learning programming languages, and how software risks can be assessed (and lessened).

Improving the lives of programmers, engineers, and software consumers

Research from Khoury faculty and graduate students leads to direct improvements in the day-to-day work of software developers. It enables them to build better tools for checking reliability of programs, solve problems that arise in creating programs for cloud computing, and help usher in the age of generative AI in computer languages, the fast-arriving future of how the world will work.

Sample research areas

  • Language design
  • Semantics
  • Type systems
  • Small and large program development
  • Programming language implementation
  • Programming environment tools
  • Generative AI tools for programming
Four Khoury students and researchers smile while having a conversation in a classroom.

Meet researcher Jonathan Bell

Bell discusses how software testing research has the potential to impact numerous domains.

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.

Recent research publications

Thirty-Three Years of Mathematicians and Software Engineers: A Case Study of Domain Expertise and Participation in Proof Assistant Ecosystems
Authors: Gwenyth Lincroft, Minsung Cho, Katherine Hough, Mahsa Bazzaz, Jonathan Bell

Software programs are essential to work in many specific knowledge domains; for instance, programs like MatLab help research mathematicians construct formal proofs. Khoury researchers looked at whether and how the software developers and the mathematicians collaborate on the software itself and what the implications are for development.

A Large-Scale Longitudinal Study of Flaky Tests
Authors: Wing Lam, Stefan Winter, Anjiang Wei, Tao Xie, Darko Marinov, Jonathan Bell

Flaky tests are a headache for software developers; in fact, they get their name from the fact that their results aren’t consistent — identical code can pass during one run of the test and fail the next time. Flaky tests can result from any number of factors, and it’s key for developers to determine if the failure is a result of a code bug — or just “flaky.” Khoury researchers have studied hundreds of thousands of results from these tests to help understand these tests and approaches for developers.

Related labs and groups

Faculty members

  • Matthias Felleisen

    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.

  • Amal Ahmed

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

  • Jonathan Bell

    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.

  • Joshua Gancher

    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

    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

    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

    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.

  • Olin Shivers

    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

    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.