  Every Model of High-Level Computation (MHC) has an underlying composition
mechanism for combining simple computation devices into more complex ones.
Composition can be done by (explicitly or implicitly) defining control flow,
data flow or any combination thereof. Control flow specifies the order in which
individual computations are activated, whereas data flow defines how data is
exchanged among them. Unfortunately, traditional MHCs either mix data and
control or only consider one dimension explicitly, which makes it difficult to
reason about data flow and control flow separately. Reasoning about these
dimensions orthogonally is a crucial desideratum for optimisation,
maintainability and verification purposes. In this paper, we introduce a novel
MHC that explicitly treats data flow and control flow as separate dimensions,
while providing modularity. As the model is rooted in category theory, it
provides category-theoretic operations for compositionally constructing
sequential, parallel, branchial or iterative composites. Compositionality
entails that a composite exhibits the same properties as its respective
constituents, including separation of concerns and modularity. We conclude the
paper by demonstrating how our proposal can be used to model high-level
computations in two different application domains: software engineering and
artificial intelligence.
