The following is a brief overview of my research and publications at UC Berkeley and Intel Research from 1995 to 2010.

David Gay


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.


Papers at Intel Research

Papers at UC Berkeley