Data Races in Programming
And how to prevent them
When a programmer creates software they typically wish that software to be predictable.
Many pieces of software are deterministic so given a set of inputs the same output is always given. Although non-deterministic algorithms have their uses (for example to approximate answers) this focuses on deterministic functions.