nesC: A Programming Language for Deeply Networked Systems

UC Berkeley WEBS Project

Last updated 14 December 2004


Eric Brewer, UC Berkeley
David Culler, UC Berkeley
David Gay, Intel Research
Phil Levis, UC Berkeley
Rob von Behren, UC Berkeley
Matt Welsh, Harvard University


nesC (pronounced "NES-see") is an extension to the C programming language designed to embody the structuring concepts and execution model of TinyOS. TinyOS is an event-driven operating system designed for sensor network nodes that have very limited resources (e.g., 8K bytes of program memory, 512 bytes of RAM).

The basic concepts behind nesC are:

The image below shows the structure (components and their wiring) of a simple application, Blink, that blinks an LED once a second:

The sourcecode for Blink is in two parts, the wiring in Blink and the actual application logic (C code) in BlinkM.


For more details, see the ChangeLog.


An implementation of nesC (including source code) is available on Sourceforge.