This document discusses wireless sensor networks and middleware approaches for them. It describes wireless sensor networks as consisting of distributed autonomous sensor nodes that monitor physical environments cooperatively. It outlines common sensor node components and network architectures. It then defines middleware as a software layer that manages complexity and heterogeneity. Key middleware design principles for wireless sensor networks include supporting limited resources, scalability, and data aggregation. The document outlines several middleware approaches, including those based on global behavior, local behavior, virtual machines, databases, and modular programming.