  Dynamical systems are a broad class of mathematical tools used to describe
the evolution of physical and computational processes. Traditionally these
processes model changing entities in a static world. Picture a ball rolling on
an empty table. In contrast, open dynamical systems model changing entities in
a changing world. Picture a ball in an ongoing game of billiards. In the
literature, there is ambiguity about the interpretation of the "open" in open
dynamical systems. In other words, there is ambiguity in the mechanism by which
open dynamical systems interact. To some, open dynamical systems are
input-output machines which interact by feeding the input of one system with
the output of another. To others, open dynamical systems are input-output
agnostic and interact through a shared pool of resources. In this paper, we
define an algebra of open dynamical systems which unifies these two
perspectives. We consider in detail two concrete instances of dynamical systems
-- continuous flows on manifolds and non-deterministic automata.
