The computational landscape is drastically changing. Processing, sensing, communication, and actuation are now affordable and embeddable, allowing us to manufacture myriads of devices that can be spread through space and placed in the world. The catch is that in order to manufacture these devices economically in bulk, we must accept faults, inaccuracies, and communication delays. If we were to be able to robustly harness these devices, we could economically develop systems with unparalleled power, grace, fidelity, and pervasiveness. Example spatial computing domains are sensor networks, smart materials, swarm robotics, biofilms, and modular robotics, to name a few. Unfortunately, traditional engineering approaches do not apply, and we must rethink our computing models, languages, and practices. Typical solutions entangle robustness with coordination, producing applications that do not scale well and modules that do not compose well nor map easily over to other application domains. We offer an alternate approach whereby the programmer controls a single virtual spatial computer which fills the environment space. The computations on this spatial computer are actually performed by a large number of locally-interacting individual devices. This abstracts the actual computational hardware behind the spatial computer interface, and allows the programmer to focus on a single model of global computation. We achieve this abstraction with two components: a language that embodies continuous space and time semantics and a runtime library that implements these semantics approximately. In this talk, I will introduce our language, called Proto, using examples from sensor networks, and hint at the generality of the approach, using examples from distributed robotics.
Download the slides for this presentation in PDF format.
About the speaker:
Jonathan Bachrach is a research scientist at the MIT Computer Science and Artificial Intelligence Lab (CSAIL) who researches programming languages, spatial computing, and robotics. Before MIT, he held postdocs at Stanford and UC Berkeley, was a researcher at IRCAM in Paris, developing new musical platforms, and a principle software engineer at Harlequin Inc (RIP), working on a compiler and runtime for the Dylan programming language. He studied cognitive science, computer science, and visual arts, receiving a B.S. degree from the University of California at San Diego and MS and PhD degrees from the University of Massachusetts at Amherst.