CMU Principles of Programming (POP) Group
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.
Principles of Programming Group, March 2005
Picture of POP Group circa 1999
POP-Related Faculty and Grad Students
Jonathan Aldrich Marwan Abi-Antoun
Kevin Bierhoff
Neel Krishnaswami
Donna Malayeri
Guy Blelloch Umut Acar
Perry Cheng
Stephen Brookes
Edmund Clarke Sagar Chaki
Pankajkumar Chauhan
Himanshu Jain
Flavio Lerda
Anubhav Gupta
Alex Groce
Sumit Jha
Stephen Magill
Vaibhav Mehta
Nishant Sinha
Muralidhar Talupur
Anubhav Gupta
Constantinos Bartzis
Dan Milam [postdoc]
Aleksandar Nanevski [postdoc]
Prasanna Thati [postdoc]
Karl Crary Aleksey Kliger
Tom Murphy
William Lovas
Leaf Petersen
Susmit Sarkar
Joe Vanderwaart
Robert Harper Ashish Agarwal
Dan Licata
Tom Murphy
Dan Spoonhower
Peter Lee Michael Donohue
David Eger
Stephen Magill
Noam Zeilberger
Frank Pfenning Andreas Abel [visiting scholar]
Kaustuv Chaudhuri
Joshua Dunfield
Deepak Garg
Aleksandar Nanevski
Sean McLaughlin
Jonathan Moody
Sungwoo Park
Jason Reed
Kevin Watkins
John Reynolds
William Scherlis
Dana Scott [emeritus]
Jeannette Wing
Related Projects with Web Pages
ArchJava: The ArchJava language integrates a specification of software architecture into Java source code, and uses a type system to verify that all run-time communication obeys architectural constraints.

Composable Software Systems: Providing a scientific and engineering basis for designing, building, and analyzing composable software systems, and providing languages, tools, environments, and techniques to support these activities.

ConCert: The ConCert Project investigates the theoretical and engineering basis for the trustless dissemination of software in an untrusted environment. To make this possible the project investigates machine-checkable certificates of compliance with security, integrity, and privacy requirements. Such checkable certificates allow participants to verify the intrinsic properties of disseminated software, rather than extrinsic properties such as the software's point of origin.

Formal Methods: The development and use of mathematically-based languages, techniques, and tools to support the specification and verification of software and hardware systems.

Logical Frameworks: The LF logical framework and its implementation in Twelf constraint logic programming language and theorem prover.

Logics of Types and Computation: Using type theory (and topos theory) via realizability to model a constructive logic which accomodates standard types and domain theory, has extensive closure conditions, and supports polymorphism.

Fox: Advancing the art of programming-language design and implementation, and simultaneously applying principles of programming languages to advance the art of systems building, as demonstrated by the FoxNet.

MESS: Semantics-based implementation of programming languages.

Model Checking: Formally verifying finite-state concurrent systems, with applications to several complex industrial systems such as the Futurebus+ and the PCI local bus protocols.

Modular Aspect-oriented Programming: Studying type theory, module systems, and analysis for aspect-oriented programming systems.

Scandal: The development of a portable, interactive environment for programming a wide range of supercomputers, including the portable, parallel language NESL and fast implementations of parallel algorithms for irregular problems.

Proof-Carrying Code: Guaranteeing safety properties of program binaries.

PSciCo (Parallel Scientific Computing): Studying how features of advanced programming languages can be used in the design of algorithms for Scientific and Geometric computing.

SeLF: Distributed System Security via Logical Frameworks.

Triple: Type Refinement in Programming Languages

Venari: Providing software support for storing, accessing, and retrieving objects based on their semantics.
Recent Graduates (1998 till present, Chronological)
Rowan Davies: Practical refinement-type checking (Feb 2005)
Derek Dreyer: Understanding and Evolving the ML Module System (Jan 2005)
Aleksandar Nanevski: Functional Programming with Names and Necessity (Aug 2004)
Andrew Bernard: Engineering Formal Security Policies for Proof-Carrying Code (May 2004)
Brigitte Pientka: Tabled Higher-order Logic Programming (Dec 2003)
Kathryn Van Stone: A Denotational Approach to Measuring Complexity in Functional Programs (Aug 2003)
Aaron Greenhouse: A Programmer-Oriented Approach to Safe Concurrency (May 2003)
Sergey Anatolyevich Berezin: Model Checking and Theorem Proving: A Unified Framework (May 2002)
Wilfredo Marrero: Brutus: A Model Checker for Security Protocols (Dec 2001)
Perry Sze-Din Cheng: Scalable Real-Time Parallel Garbage Collection for Symmetric Multiprocessors (Dec 2001)
Jeffrey Polakow: Ordered Linear Logic and Applications (Aug 2001)
Robert W. O'Callahan: Generalized Aliasing as a Basis for Program Analysis Tools (May 2001)
Andrej Bauer: The Realizability Approach to Computable Analysis and Topology (Dec 2000)
Craig Damon: Selective Enumeration (Aug 2000)
Carsten Schürmann: Automating the Meta-Theory of Deductive Systems (Aug 2000)
Chris Stone: Singleton Kinds and Singleton Types (Aug 2000)
Lars Birkedal: Developing Theories of Types and Computability via Realizability (Dec 1999)
Juergen Dingel: Systematic Parallel Programming (Dec 1999)
Marius Minea: Partial Order Reduction for Verification of Timed Systems (Dec 1999)
Bwolen Po-Jen Yang: Optimizing Model Checking Based on BDD Characterization (May 1999)
Darrell Kindred: Theory Generation for Security Protocols (May 1999)
George Necula: Compiling with Proofs (Dec 1998)
Denis Dancanet: Intensional Investigations (Dec 1998)
Yirng-An Chen: Arithmetic Circuit Verification Based on Word-Level Decision Diagrams (May 1998)
Older "Recent Graduates" (pre 1998, Alphabetical)
Sérgio Campos: A Quantitative Approach to the Formal Verification of Real-Time Systems
Iliano Cervesato: Un Logical Framework Lineare
Christopher Colby: Semantics-based Program Analysis via Symbolic Composition of Transfer Relations
Jürgen Dingel: Systematic Parallel Programming
Scott Draves: Automatic Program Specialization for Interactive Media
Andrzej Filinski: Controlling Effects
Tim Freeman: Refinement Types for ML
John Greiner: Semantics-based Parallel Cost Models and their Use in Provably Efficient Implementations
Jonathan Hardwick: Practical Parallel Divide-and-Conquer Algorithms
Nevin Heintze: Set Based Program Analysis
Somesh Jha: Symmetry and Induction in Model Checking
Frederick Knabe: Language Support for Mobile Agents
Mark Lillibridge: Translucent Sums: A Foundation for Higher-Order Module Systems
Spiro Michaylov: Design and Implementation of Practical Constraint Logic Programming Systems
Greg Morrisett: Compiling with Types
Girija Narlikar: Space-efficient Scheduling for Parallel, Multithreaded Computations
Scott Nettles: Safe and Efficient Persistent Heaps
Chris Okasaki: Purely Functional Data Structures
Susan Older: A Denotational Framework for Fair Communicating Processes
Margaret Reid-Miller: Experiments with Parallel Pointer-Based Algorithms
David Tarditi: Design and Implementation of Code Optimizations for a Type-Directed Compiler for Standard ML
Roberto Virga: Higher-Order Rewriting with Dependent Types
Hao-Chi Wong: Protecting Individuals' Interests in Electronic Commerce Protocols
Amy Zaremski: Signature and Specification Matching
Xudong Zhao: Verification of Arithmetic Circuits
Related Courses and Seminars
POP Seminar
ConCert Reading Group
15-312: Foundations of Programming Languages
15-814: Type Systems for Programming Languages
15-814A: Denotational Semantics of Types
15-815: Automated Theorem Proving
15-816: Linear Logic
15-818A4: Separation Logic
15-819: Refinement Types
15-819: Type Systems for Modularity
15-819B: Typed Compilation
15-851 Computation and Deduction
21-800: Lambda Calculus with Richard Statman
80-714: Category Theory
previous next csd home

Maintained by Kevin Watkins (kw+@cmu.edu)
Last updated September 12, 2000