We are interested in exploring programming language support for sensor networks. Currently, sensor network applications are implemented as complex, low-level programs that specify the behavior of individual motes. Rather, we would like to provide a high-level, global programming model where the application can be specified in terms of system-wide behavior, which is then compiled down to the per-device program.
Flask is a domain specific language embedded in Haskell that seeks to address the challenge of programming sensor networks by making the type of high-level, reusable abstractions commonly developed in the functional programming community available in the sensor network domain. Flask consists of four major components:
Regiment is a spatial macroprogramming language that abstracts the sensor network state as time-varying streams, which can be groupd into regions. Regions provide a means of expression spatial and logical relationships between sensor nodes, transparent data sharing between nodes, and efficient reduction operations within regions.
Abstract Regions is a spatial programming model that exposes the tradeoff between resource usage and the accuracy of collective operations, allowing applications to tune energy and bandwidth consumption to meet accuracy targets.
We are also investigating the use of market-based techniques for distributed resource allocation in sensor networks. Such an approach models the network as a set of agents that operate to maximize their profit for performing simple, local actions in response to globally-advertised price information. Sensor nodes run a very simple cost-evaluation function, and global behavior is induced throughout the network by advertising price information that drives nodes to react. For more details see our NSDI 2005 paper on SORA.
Our group is studying approaches to time synchronization and desynchronization in sensor networks that are inspired by biological mechanisms found, for example, in certain species of fireflies that spontaneously synchronize their flashing activity. Our group is interested in the design of simple, self-organizing algorithms for sensor networks, that can easily adapt and repair to errors and changes in topology. We have shown how firefly-inspired synchronization can be adapted for applications on real wireless sensor networks, with message delays, clock skew, and frequent topology changes. We have also shown one can adapt these principles to solve new problems, such as desynchronization, and we have used this to design a self-repairing TDMA scheme for collision-free wireless transmissions.