  Dynamical systems are ubiquitous in science and engineering as models of
phenomena that evolve over time. Although complex dynamical systems tend to
have important modular structure, conventional modeling approaches suppress
this structure. Building on recent work in applied category theory, we show how
deterministic dynamical systems, discrete and continuous, can be composed in a
hierarchical style. In mathematical terms, we reformulate some existing operads
of wiring diagrams and introduce new ones, using the general formalism of
C-sets (copresheaves). We then establish dynamical systems as algebras of these
operads. In a computational vein, we show that Euler's method is functorial for
undirected systems, extending a previous result for directed systems. All of
the ideas in this paper are implemented as practical software using Catlab and
the AlgebraicJulia ecosystem, written in the Julia programming language for
scientific computing.
