Craig Chambers

Craig Chambers joined Google in 2007. He leads projects aimed at making it easier to develop and evolve complex, efficient software systems, particularly massively parallel systems and web-based applications.

Prior to joining Google, he was a Professor in the Department of Computer Science and Engineering at the University of Washington, Seattle. He joined the faculty there in 1991. His research focused on programming languages, optimizing compilers, and object-oriented systems.

He received his S.B. degree from MIT in 1986, and his Ph.D. degree from Stanford in 1992, both in Computer Science.

He has won a number of awards, including the 2011 Dahl-Nygaard Senior Prize and several "best paper" awards.

Google Publications

Previous Publications

  •   

    Automatic Inference of Optimizer Flow Functions from Semantic Meanings

    Erika Rice Scherpelz, Sorin Lerner, Craig Chambers

    Proc. PLDI 07, ACM Press (2007), pp. 135-145

  •   

    Automated soundness proofs for dataflow analyses and transformations via local rules

    Sorin Lerner, Todd D. Millstein, Erika Rice, Craig Chambers

    POPL (2005), pp. 364-377

  •   

    Cobalt: A Language for Writing Provably-Sound Compiler Optimizations

    Sorin Lerner, Todd D. Millstein, Craig Chambers

    Electr. Notes Theor. Comput. Sci., vol. 132 (2005), pp. 5-17

  •   

    Modular typechecking for hierarchically extensible datatypes and functions

    Todd D. Millstein, Colin Bleckner, Craig Chambers

    ACM Trans. Program. Lang. Syst., vol. 26 (2004), pp. 836-889

  •   

    Ownership Domains: Separating Aliasing Policy from Mechanism

    Jonathan Aldrich, Craig Chambers

    ECOOP (2004), pp. 1-25

  •   

    Automatically proving the correctness of compiler optimizations

    Sorin Lerner, Todd D. Millstein, Craig Chambers

    PLDI (2003), pp. 220-231

  •   

    Comprehensive synchronization elimination for Java

    Jonathan Aldrich, Emin G, Craig Chambers, Susan J. Eggers

    Sci. Comput. Program., vol. 47 (2003), pp. 91-120

  •   

    HydroJ: object-oriented pattern matching for evolvable distributed systems

    Keunwoo Lee, Anthony LaMarca, Craig Chambers

    OOPSLA (2003), pp. 205-223

  •   

    Language Support for Connector Abstractions

    Jonathan Aldrich, Vibha Sazawal, Craig Chambers, David Notkin

    ECOOP (2003), pp. 74-102

  •   

    Relaxed MultiJava: balancing extensibility and modular typechecking

    Todd D. Millstein, Mark Reay, Craig Chambers

    OOPSLA (2003), pp. 224-240

  •   

    Alias annotations for program understanding

    Jonathan Aldrich, Valentin Kostadinov, Craig Chambers

    OOPSLA (2002), pp. 311-330

  •   

    ArchJava: connecting software architecture to implementation

    Jonathan Aldrich, Craig Chambers, David Notkin

    ICSE (2002), pp. 187-197

  •   

    Architectural Reasoning in ArchJava

    Jonathan Aldrich, Craig Chambers, David Notkin

    ECOOP (2002), pp. 334-367

  •   

    Architecture-centric programming for adaptive systems

    Jonathan Aldrich, Vibha Sazawal, Craig Chambers, David Notkin

    WOSS (2002), pp. 93-95

  •   

    Composing dataflow analyses and transformations

    Sorin Lerner, David Grove, Craig Chambers

    POPL (2002), pp. 270-282

  •   

    Improving program slicing with dynamic points-to data

    Markus Mock, Darren C. Atkinson, Craig Chambers, Susan J. Eggers

    SIGSOFT FSE (2002), pp. 71-80

  •   

    Modular Statically Typed Multimethods

    Todd D. Millstein, Craig Chambers

    Inf. Comput., vol. 175 (2002), pp. 76-118

  •   

    Modular typechecking for hierarchically extensible datatypes and functions

    Todd D. Millstein, Colin Bleckner, Craig Chambers

    ICFP (2002), pp. 110-122

  •   

    Staged compilation

    Craig Chambers

    PEPM (2002), pp. 1-8

  •   

    Towards automatic construction of staged compilers

    Matthai Philipose, Craig Chambers, Susan J. Eggers

    POPL (2002), pp. 113-125

  •   

    A framework for call graph construction algorithms

    David Grove, Craig Chambers

    ACM Trans. Program. Lang. Syst., vol. 23 (2001), pp. 685-746

  •   

    Dynamic points-to sets: a comparison with static analyses and potential applications in program understanding and optimization

    Markus Mock, Manuvir Das, Craig Chambers, Susan J. Eggers

    PASTE (2001), pp. 66-72

  •   

    A Debate on Language and Tool Support for Design Patterns

    Craig Chambers, Bill Harrison, John M. Vlissides

    POPL (2000), pp. 277-289

  •   

    Calpa: a tool for automating selective dynamic compilation

    Markus Mock, Craig Chambers, Susan J. Eggers

    MICRO (2000), pp. 291-302

  •   

    DyC: an expressive annotation-directed dynamic compiler for C

    Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

    Theor. Comput. Sci., vol. 248 (2000), pp. 147-199

  •   

    MultiJava: modular open classes and symmetric multiple dispatch for Java

    Curtis Clifton, Gary T. Leavens, Craig Chambers, Todd D. Millstein

    OOPSLA (2000), pp. 130-145

  •   

    The benefits and costs of DyC's run-time optimizations

    Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

    ACM Trans. Program. Lang. Syst., vol. 22 (2000), pp. 932-972

  •   

    An Evaluation of Staged Run-Time Optimizations in DyC

    Brian Grant, Matthai Philipose, Markus Mock, Craig Chambers, Susan J. Eggers

    PLDI (1999), pp. 293-304

  •   

    An evaluation of staged run-time optimizations in DyC (with retrospective)

    Brian Grant, Matthai Philipose, Markus Mock, Craig Chambers, Susan J. Eggers

    Best of PLDI (1999), pp. 656-669

  •   

    Dependence Analysis for Java

    Craig Chambers, Igor Pechtchanski, Vivek Sarkar, Mauricio J. Serrano, Harini Srinivasan

    LCPC (1999), pp. 35-52

  •   

    Efficient Multiple and Predicated Dispatching

    Craig Chambers, Weimin Chen

    OOPSLA (1999), pp. 238-255

  •   

    Modular Statically Typed Multimethods

    Todd D. Millstein, Craig Chambers

    ECOOP (1999), pp. 279-303

  •   

    Static Analyses for Eliminating Unnecessary Synchronization from Java Programs

    Jonathan Aldrich, Craig Chambers, Emin G, Susan J. Eggers

    SAS (1999), pp. 19-38

  •   

    Fast Interprocedural Class Analysis

    Greg DeFouw, David Grove, Craig Chambers

    POPL (1998), pp. 222-236

  •   

    Predicate Dispatching: A Unified Theory of Dispatch

    Michael D. Ernst, Craig S. Kaplan, Craig Chambers

    ECOOP (1998), pp. 186-211

  •   

    Annotation-Directed Run-Time Specialization in C

    Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers

    PEPM (1997), pp. 163-178

  •   

    Call Graph Construction in Object-Oriented Languages

    David Grove, Greg DeFouw, Jeffrey Dean, Craig Chambers

    OOPSLA (1997), pp. 108-124

  •   

    Expressive, Efficient Instance Variables

    Jeffrey Dean, David Grove, Craig Chambers, Vassily Litvinov

    University of Washington (1996)

  •  

    Fast, Effective Dynamic Compilation

    Joel Auslander, Matthai Philipose, Craig Chambers, Susan J. Eggers, Brian N. Bershad

    PLDI (1996), pp. 149-159

  •  

    Synergies Between Object-Oriented Programming Language Design and Implementation Research

    Craig Chambers

    ISOTAS (1996), pp. 250-259

  •  

    Towards Reusable, Extensible Components

    Craig Chambers

    ACM Comput. Surv., vol. 28 (1996), pp. 192

  •   

    Vortex: An Optimizing Compiler for Object-Oriented Languages

    Jeffrey Dean, Greg DeFouw, David Grove, Vassily Litvinov, Craig Chambers

    OOPSLA, San Jose, CA (1996), pp. 83-100

  •   

    A Framework for Selective Recompilation in the Presence of Complex Intermodule Dependencies

    Craig Chambers, Jeffrey Dean, David Grove

    ICSE, Seattle, Washington (1995), pp. 221-230

  •  

    Extensibility, Safety and Performance in the SPIN Operating System

    Brian N. Bershad, Stefan Savage, Przemyslaw Pardyak, Emin G, Marc E. Fiuczynski, David Becker, Craig Chambers, Susan J. Eggers

    SOSP (1995), pp. 267-284

  •   

    Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis

    Jeffrey Dean, David Grove, Craig Chambers

    ECOOP (1995), pp. 77-101

  •   

    Profile-Guided Receiver Class Prediction

    David Grove, Jeffrey Dean, Charles Garrett, Craig Chambers

    OOPSLA, Austin, TX (1995), pp. 108-123

  •  

    SPIN - An Extensible Microkernel for Application-specific Operating System Services

    Brian N. Bershad, Craig Chambers, Susan J. Eggers, Chris Maeda, Dylan McNamee, Przemyslaw Pardyak, Stefan Savage, Emin G

    Operating Systems Review, vol. 29 (1995), pp. 74-77

  •   

    Selective Specialization for Object-Oriented Languages

    Jeffrey Dean, Craig Chambers, David Grove

    PLDI, La Jolla, CA (1995), pp. 93-102

  •   

    Typechecking and Modules for Multimethods

    Craig Chambers, Gary T. Leavens

    ACM Trans. Program. Lang. Syst., vol. 17 (1995), pp. 805-843

  •   

    Identifying Profitable Specialization in Object-Oriented Languages

    Jeffrey Dean, Craig Chambers, David Grove

    Workshop on Partial Evaluation & Semantics-based Program Manipulation, Orlando, FL (1994), pp. 85-96

  •  

    SPIN - An Extensible Microkernel for Application-specific Operating System Services

    Brian N. Bershad, Craig Chambers, Susan J. Eggers, Chris Maeda, Dylan McNamee, Przemyslaw Pardyak, Stefan Savage, Emin G

    ACM SIGOPS European Workshop (1994), pp. 68-71

  •   

    Towards Better Inlining Decisions Using Inlining Trials

    Jeffrey Dean, Craig Chambers

    Proceedings of the 1994 Conference on Lisp and Functional Programming (L&FP'94), Orlando, FL, pp. 273-282

  •  

    Typechecking and Modules for Multi-Methods

    Craig Chambers, Gary T. Leavens

    OOPSLA (1994), pp. 1-15

  •  

    Efficient implementation of object-oriented programming lanaguages (abstract)

    Craig Chambers, David Ungar

    OOPS Messenger, vol. 4 (1993), pp. 224

  •   

    Predicate Classes

    Craig Chambers

    ECOOP (1993), pp. 268-296

  •  

    Debugging Optimized Code with Dynamic Deoptimization

    Urs Hölzle, Craig Chambers, David Ungar

    PLDI (1992), pp. 32-43

  •  

    Object, Message, and Performance: How They Coexist in Self

    David Ungar, Randall B. Smith, Craig Chambers, Urs Hölzle

    IEEE Computer, vol. 25 (1992), pp. 53-64

  •   

    Object-Oriented Multi-Methods in Cecil

    Craig Chambers

    ECOOP (1992), pp. 33-56

  •  

    The Design and Implementation of the SELF Compiler, an Optimizing Compilet for Object-Oriented Programming Languages

    Craig Chambers

    Ph.D. Thesis, Stanford University (1992)

  •  

    An Efficient Implementation of SELF, a Dynamically-Typed Object-Oriented Language Based on Prototypes

    Craig Chambers, David Ungar, Elgin Lee

    Lisp and Symbolic Computation, vol. 4 (1991), pp. 243-281

  •  

    Iterative Type Analysis and Extended Message Splitting: Optimizing Dynamically-Typed Object-Oriented Programs

    Craig Chambers, David Ungar

    Lisp and Symbolic Computation, vol. 4 (1991), pp. 283-310

  •  

    Making Pure Object-Oriented Languages Practical

    Craig Chambers, David Ungar

    OOPSLA (1991), pp. 1-15

  •   

    Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches

    Urs Hölzle, Craig Chambers, David Ungar

    ECOOP (1991), pp. 21-38

  •  

    Organizing Programs Without Classes

    Craig Chambers, David Ungar, Bay-Wei Chang, Urs Hölzle

    Lisp and Symbolic Computation, vol. 4 (1991), pp. 223-242

  •  

    Parents are Shared Parts of Objects: Inheritance and Encapsulation in SELF

    Craig Chambers, David Ungar, Bay-Wei Chang, Urs Hölzle

    Lisp and Symbolic Computation, vol. 4 (1991), pp. 207-222

  •  

    Iterative Type Analysis and Extended Message Splitting: Optimizing Dynamically-Typed Object-Oriented Programs

    Craig Chambers, David Ungar

    PLDI (1990), pp. 150-164

  •   

    A retrospective on:

    Craig Chambers, David Ungar

    Best of PLDI (1989), pp. 295-312

  •  

    An Efficient Implementation of SELF - a Dynamically-Typed Object-Oriented Language Based on Prototypes

    Craig Chambers, David Ungar, Elgin Lee

    OOPSLA (1989), pp. 49-70

  •  

    Customization: Optimizing Compiler Technology for SELF, A Dynamically-Typed Object-Oriented Programming Language

    Craig Chambers, David Ungar

    PLDI (1989), pp. 146-160