Programming the Internet of Uncertain < T >hings

  • James Bornholt ,
  • Na Meng ,
  • Todd Mytkowicz ,
  • Kathryn S McKinley

Sensors to Cloud Architectures Workshop (SCAW) |

Published by ACM - Association for Computing Machinery

The transformation from desktops and servers to devices and cloud services—the Internet of things (IoT)—is well underway. A key problem facing IoT applications is their increasing reliance on estimated data from diverse sources, such as sensors, machine learning, and human computing. Current programming abstractions treat these estimates as if they were precise, creating buggy applications. Existing approaches to mitigate noise in estimates either add naive ad-hoc filters or construct sophisticated statistical models. They are either too fragile or too complex for ordinary developers to use. IoT developers need abstractions that help them (1) reason about estimates, because they are noisy and inherently inaccurate; (2) trade accuracy for energy efficiency on battery limited devices; and (3) compose data from disparate sources on devices and in the cloud.

In prior work, we proposed a new programming abstraction called UncertainhT i to help developers reason about noise in estimates. This abstraction embeds statistical reasoning into programming language semantics for commonly used languages, such as C++, C#, and Java, instead of making developers program their own statistics. This paper further improves programmability and accuracy for estimates by (1) providing two program constructs to specify context—application-specific domain knowledge—and showing how improving estimates requires such context; and (2) implementing a runtime which automatically composes context with estimates. A case study shows that developers easily use our constructs to add context and improve application accuracy. This paper motivates the need for programming abstractions for estimates to build correct IoT applications, and shows how they make IoT programming more accessible to a wider class of developers.