Principles of Programming Group

Computer Science Department

Carnegie Mellon University

What We Do

The goal of the PoP group is to understand, develop, and demonstrate the principles, processes, and supporting technologies for the construction of computing systems.

Special areas of interest include: applications of logic (including formal semantics and type theory); techniques for designing and implementing programming languages; formal specification and verification of hardware and software systems.

A distinguishing characteristic of the PoP group is that it applies formal principles to problems of realistic scale and complexity, for example: automatic verification of large-scale commercial hardware systems; implementation of high-speed network communication software in the ML language; application of type-theoretic principles in the construction of realistic compilers.

Keep in Touch

Affiliated Faculty

Umut Acar

algorithms and data structures, parallel computing, programming languages, software systems and architecture

Jonathan Aldrich

compilers, formal methods/verification, parallel computing, programming languages, software engineering

Stephanie Balzer

programming languages, program verification, type theory, and logic

Guy Blelloch

algorithms and data structures, parallel computing, theory of computing

Stephen Brookes

theory of computing, programming languages

Iliano Cervesato


Edmund Clarke

formal methods/verification

Karl Crary

formal methods/verification, logic, programming languages

Anupam Datta


Matt Fredrikson


Robert Harper

programming languages

Jan Hoffmann

verification, programming languages, resource analysis, security


Stefan Mitsch

modeling, refactoring, collaboration, and verification methods for hybrid systems


Bryan Parno

verification, security


Frank Pfenning

programming languages, logic, security

André Platzer

control systems, cyber physical systems, formal methods/verification, game theory, logic, programming languages, robotics, security

William Scherlis

software engineering, software systems and architecture, parallel computing

Jean Yang

formal methods/verification, programming languages, security, computational biology

Other Members

Name Position
Arbob Ahmad Graduate student
Waqar Ahmad Graduate student
Carlo Angiuli Graduate student
Brandon Bohrer Graduate student
Evan Cavallo Graduate student
Michael Coblenz Graduate student
Flavio Cruz Graduate student
Ankush Das Graduate student
Henry DeYoung Graduate student
Nicolas Feltman Graduate student
Nathan Fulton Graduate student
Hannah (Anna) Gommerstadt Graduate student
David Henriques Graduate student
Favonia Hou Graduate student
Ran Ji Postdoc
Ryan Kavanagh Graduate student
Darya Kurilova Graduate student
Michael Maass Graduate student
João Martins Graduate student
Filipe Militao Graduate student
Ed Morehouse Postdoc
Stefan Mullter Graduate student
Chan Ngo Postdoc
Cyrus Omar Graduate student
Ram Raghunathan Graduate student
Kristina Sojakova Graduate student
Michael Sullivan Graduate student
Joe Tassaroti Graduate student
Erik Zawadzki Graduate student