The following is a brief overview of my research and publications at UC Berkeley and Intel Research from 1995 to 2010.
David Gay
Research
I am a programming language researcher who likes to design languages and
build compilers. My goal is to produce languages that will make it easier
to write correct programs, through static or dynamic checking. In most
cases, I have found it best to design new languages as small extensions
to existing, popular languages (e.g., C) as this provides familiarity
to users and access to a large, existing code base.
Main Projects
From 1995 to 2001, I did a PhD under Alex
Aiken at UC Berkeley - more information on my thesis, including a compiler for a
dialect of C extended with regions can be
found here.
From 2001 to 2010, I worked at Intel Research Berkeley where I was one
of the designers and principal implementer of the nesC language, the C
dialect used to implement the popular TinyOS sensor network operating
system and its applications. I also helped implement TinyOS itself,
and chaired the TinyOS 2.0 working group.
Subsequently, I worked with the UC
Berkeley Ivy project, which
aims to replace C as a system's programming language. Ivy improves on
C by providing type, memory and concurrency safety; additionally Ivy
supports mostly seamless interoperation with C code. See our web page
for more information and an Ivy compiler release.
My final work at Intel was on Yada, a deterministic parallel language which
aims to make parallel programming approachable for regular programmers.
Publications
Papers at Intel Research
- Emerson: Scripting for Federated Virtual Worlds,
Bhupesh Chandra, Ewen Cheslack-Postava, Behram F. T. Mistree, Philip A. Levis and David Gay
CGAMES'10: International Conference on Computer Games: AI, Animation, Mobile, Interactive Multimedia, Educational & Serious Games, Louisville, Kentucky, USA
[PDF]
- An Effective Dynamic Analysis for Detecting Generalized Deadlocks,
Pallavi Joshi, Mayur Naik, Koushik Sen and David Gay
FSE'10: ACM SIGSOFT Symposium on the Foundations of Software Engineering
[PDF]
- Lightweight Annotations for Controlling Sharing in Concurrent
Data Structures, Zachary Anderson, David Gay and Mayur Naik
PLDI'09: ACM SIGPLAN Conference on Programming Language Design and
Implementation, Dublin, Ireland, June 2009.
[PDF]
- Effective Static Deadlock Detection (Distinguished Paper Award),
Mayur Naik, Chang-Seo Park, Koushik Sen and David Gay
ICSE'09: Internation Conference on Software Engineering, Vancouver, Canada, May 2009.
[PDF]
- SharC: Checking Data Sharing Strategies for Multithreaded C,
Zachary Anderson, David Gay, Rob Ennals and Eric Brewer
PLDI'08: ACM SIGPLAN Conference on Programming Language Design and
Implementation, Tucson, Arizona, June 2008.
[PDF]
An expanded version of this paper is available as UC Berkeley technical report EECS-2008-25.
- The Emergence of a Networking Primitive in Wireless Sensor Networks,
Philip Levis, Eric Brewer, David Culler, David Gay, Sam Madden, Neil Patel, Joe Polastre,
Scott Shenker, Robert Szewczyk, and Alec Woo
Communications of the ACM, Volume 51, Issue 7 (July 2008)
[PDF]
- Integrating Concurrency Control and Energy Management in Device Drivers,
Kevin Klues, Vlado Handziski, Chenyang Lu, Adam Wolisz, David Culler,
David Gay, and Phil Levis
SOSP'07: ACM SIGOPS Symposium on Operating Systems Principles, Stevenson, Washingnton, October 2007.
[PDF]
- Efficient Memory Safety for TinyOS,
Nathan Cooprider, Will Archer, Eric Eide, David Gay and John Regehr
Sensys'07: ACM International Conference on Embedded Networked Sensor
Systems, Sydney, Australia, November 2007.
[PDF]
- Safe Manual Memory Management,
David Gay, Rob Ennals, and Eric Brewer
ISMM'07: ACM SIGPLAN International Symposium on Memory Management, Montréal, Canada, October 2007.
[PDF]
- User-Friendly Functional Programming for Web Mashups,
Rob Ennals and David Gay
ICFP'07: ACM SIGPLAN International Conference on Functional Programming, Freiburg, Germany, October 2007.
[PDF]
- Beyond Bug-Finding: Sound Program Analysis for Linux,
Zachary Anderson, Eric Brewer, Jeremy Condit, Robert Ennals, David Gay, Matthew Harren, George Necula, and Feng Zhou
HotOS XI: Workshop on Hot Topics in Operating Systems, San Diego, California, May 2007.
[PDF]
- Multi-Language Synchronization, Rob Ennals and David Gay
ESOP'07: European Symposim on Programming, Braga, Portugal, March-April 2007.
[PDF]
- Dependent Types for Low-Level Programming,
Jeremy Condit, Matthew Harren, Zachary Anderson, David Gay,
and George Necula
ESOP'07: European Symposim on Programming, Braga, Portugal, March-April 2007.
[PDF]
- Atomicity and visibility in tiny embedded systems,
John Regehr, Nathan Cooprider, and David Gay
PLOS'06: ACM Workshop on Programming Languages and Operating System, San Jose, California, October 2006.
[PDF]
- Declarative Networking: Language, Execution and Optimization,
Boon Thau Loo, Tyson Condie, Minos Garofalakis, David Gay,
Joseph M. Hellerstein, Petros Maniatis, Raghu Ramakrishnan, Timothy Roscoe
and Ion Stoica
SIGMOD'06: ACM SIGMOD International Conference on Management of Data,
Chicago, Illinois, June 2006.
[PDF]
- Autolocker: Synchronization Inference for Atomic Sections,
Bill McCloskey, Feng Zhou, David Gay and Eric Brewer
POPL'06: ACM SIGPLAN/SIGACT Symposium on Principles of Programming Languages,
Charleston, South Carolina, January 2006.
[PDF]
- A Macroscope in the Redwoods,
Gilman Tolle, Joseph Polastre, Robert Szewczyk, David Culler,
Neil Turner, Kevin Tu, Stephen Burgess, Todd Dawson,
Phil Buonadonna, David Gay and Wei Hong.
SenSys'05: ACM Conference on Embedded Networked Sensor Systems, San Diego, California, November 2005.
[PDF]
- Language Support for Interoperable Messaging in Sensor Networks,
Kevin Chang and David Gay
SCOPES'05: 9th International Workshop on Software and Compilers for Embedded Systems,
Dallas, Texas, September 2005.
[PDF]
- Software Design Patterns for TinyOS,
David Gay, Phil Levis and David Culler
LCTES'05: ACM SIGPLAN/SIGBED Conference on Languages, Compilers and Tools for
Embedded Systems, Chicago, Illinois, June 2005.
[PDF]
An extended version of this paper appears in
ACM Transactions on Embedded Computing Systems (TECS), Volume 6, Issue 4, September 2007.
[PDF]
- Active Sensor Networks,
Philip Levis, David Gay and David Culler
NSDI'05: Second Symposium on Networked Systems Design and Implementation,
Boston, Massachusetts, May 2005.
[PDF]
- TASK: Sensor Network in a Box, Phil Buonadonna, David Gay, Joseph M. Hellerstein, Wei Hong and Samuel Madden
EWSN'05: Second European Workshop on Sensor Networks, Istanbul, Turkey, January 2005.
- The Emergence of Networking Abstractions and Techniques in TinyOS,
Philip Levis, Sam Madden, David Gay, Joseph Polastre, Robert Szewczyk,
Alec Woo, Eric Brewer and David Culler
NSDI'04: First Symposium on Networked Systems Design and Implementation,
San Francisco, California, March 2004.
[PDF]
- The nesC Language: A Holistic Approach to Networked Embedded Systems,
David Gay, Phil Levis, Robert von Behren, Matt Welsh, Eric Brewer and David Culler
PLDI'03: ACM SIGPLAN Conference on Programming Language Design and
Implementation, San Diego, California, June 2003.
[PDF]
Papers at UC Berkeley
- An Analysis of VI Architecture Primitives in Support of Parallel and
Distributed Communication,
Andrew Begel, Philip Buonadonna, David E. Culler and David Gay
Concurrency and Computation: Practice and Experience, 2002; 14:55-76.
- Language Support for Regions,
David Gay and Alex Aiken
PLDI'01: ACM SIGPLAN Conference on Programming Language Design and
Implementation, Snowbird, Utah, June 2001.
[PDF]
- Fast Escape Analysis and Stack Allocation for Object-Based
Programs,
David Gay and Bjarne Steensgard
Compiler Construction 2000, Berlin, Germany, March 2000.
- Memory Management with Explicit Regions,
David Gay and Alex Aiken
PLDI'98: ACM SIGPLAN Conference on Programming Language
Design and Implementation, Montreal, Canada, June 1998.
[PDF]
- Titanium: A High-performance Java Dialect,
Katherine A. Yelick, Luigi Semenzato, Geoff Pike, Carleton Miyamoto, Ben Liblit, Arvind Krishnamurthy, Paul N. Hilfinger, Susan L. Graham, David Gay, Phillip Colella, and Alexander Aiken
1998 ACM Workshop on Java for High Performance Computing
[PDF]
- Barrier Inference,
Alex Aiken and David Gay
POPL'98: ACM SIGPLAN/SIGACT Symposium on Principles of Programming Languages,
San Diego, California, January 1998.
[PDF]
An extended version of this paper is available as my
master's thesis.