This page assumes nothing. Before you read the parent note Dataflow architectures, you should be able to read every squiggle it uses. Below, each symbol gets: plain words → the picture → why the topic needs it. They are ordered so each one leans on the ones above it.
Picture a single worker at a desk. On the desk are two slots labelled "input", and one out-tray labelled "output". The worker knows exactly one trick, say + (add).
Why the topic needs it: the parent says "Program = graph, not a list." A graph is made of these boxes. Before you can have a graph you must know what one box is — a single operation waiting for its inputs.
Why the topic needs it: the mnemonic D.A.T.A. literally says "Arrows are dependencies". The whole reason dataflow can find parallelism is that missing arrows mean no dependency — see §7.
Why the topic needs it: the parent's firing rule talks about "tokens present on all input edges". You can't understand firing until you picture the tokens sitting in the slots.
Reading it aloud: "A node fires if and only if every input slot holds a token." So one missing token = no firing, full stop. And a full set of tokens = it fires immediately, with nobody's permission.
Why the topic needs it: this is the heart of the whole architecture. In Von Neumann architecture a program counter decides when to run. Here, nothing decides — the presence of data is the decision.
This is why the parent says parallelism is "free": you don't ask for it. It is simply the absence of arrows. This idea is the natural ceiling of Instruction-Level Parallelism, and it's what Out-of-Order Execution tries to rebuild in secret inside an ordinary CPU.
Reading f(v1,v2):f is a stand-in for "whatever this node does" — if it's an add node, f(v1,v2)=v1+v2.
Why the topic needs it: in a loop, many copies of the same box are active at once. The tag stops iteration-3's number from wrongly pairing with iteration-7's number. This is what makes Loop-Level Parallelism cheap, and it is exactly the trick inside Tomasulo-style Out-of-Order Execution.
Why the topic needs it: "acyclic" guarantees the computation actually finishes — data marches forward and never chases its own tail. It is the mathematical skeleton beneath everything on this page.