New Paradigms:
Develop theory and supporting toolkit for new computing paradigms and applications.Aggregate Programming
Computation increasingly takes place not on an individual device, but distributed throughout a material or environment, whether it be a silicon surface, a network of wireless devices, a collection of biological cells, or a programmable material. Emerging programming models embrace this reality and provide abstractions inspired by physics, such as computational fields, that allow such systems to be programmed holistically, rather than in terms of individual devices.
Aggregate programming provides a method that dramatically simplifies the design, creation, and maintenance of complex distributed software systems. With this technique, the basic unit of computing is no longer a single device but instead a cooperating collection of devices: details of their behavior, network arrangement, and number are largely abstracted away, replaced with a "field" computational environment. This is accomplished through a layered approach to programming complex services that builds on foundational work on the composition of distributed systems as well as on general mechanisms to provide robust and adaptive coordination, ultimately providing engineers with a relatively simple programming API that still implicitly guarantees safety and resilience.
Synthetic Biology
Our capabilities for systematic design and engineering of biological systems are rapidly increasing. Effectively engineering such systems, however, requires the synthesis of a rapidly expanding and changing complex body of knowledge, protocols, and methodologies. Many of the problems in managing this complexity, however, appear susceptible to being addressed by computational techniques, i.e., methods enabling computers to represent, acquire, and employ knowledge. Such methods can be employed to automate physical and informational “routine” work and thus better allow humans to focus their attention on the deeper scientific and engineering issues.