Publisher Summary This chapter provides an overview of sensor networks in hardware and software platforms and application design methodologies. It describes TinyOS, nesC, and TinyGALS as examples of node-level operating systems and programming languages based on the Berkeley mote hardware. The node-centric platforms employ a message-passing abstraction of communication among nodes. Programming distributed systems beyond individual nodes has been traditionally handled by middleware technologies such as the common object request broker architecture (CORBA); however, these are not directly suitable for ad hoc resource-constrained sensor networks. State-centric programming is aimed at providing domain-specific programming models for information-processing applications in sensor networks. This allows programmers to think in terms of high-level abstractions, such as the state of the physical phenomena of interest, rather than the behaviors of individual nodes. Ultimately, in a dense sensor network, the behavior of each individual node is not important enough, and sensor network applications should be robust to check individual node failures. It is the collective behavior that makes sensor networks viable and interesting.