Swarm Computingat the University of Virginia

1950s... Programming in the Small1970s... Programming in the Large2000s... Programming in the Swarm!

Research Summary

Computing is rapidly moving away from traditional computers. Programs
in the future will run on collections of mobile processors that interact
with the physical world and communicate over ad hoc networks. We can
view such collections as swarms. As with natural swarms, such as a
beehive or ant colony, the behavior of a computational swarm emerges
from the behaviors of its individual members.

Our research focuses on developing methods for creating,
understanding and validating properties of programs that execute on
swarms of computing devices. We are striving to create and reason
about swarm programs in principled ways. A promising approach is to
construct swarm programs by combining primitives. The functional and
non-functional behavior of a primitive is described using formal
notations. We are investigating techniques based on both experimental
and analytical approaches for predicting the functional and
non-functional properties of compositions of swarm primitives.

Although the practical applications of swarm computing are in their
infancy, there is great potential for useful applications. Successful
swarm programming will depend on our ability to reason about swarm
programs and construct device programs based on high-level goals. Our
research seeks the first steps towards that target.