Nondeterminism is a concept in which the outcome of a certain process or system cannot be determined in advance. It can refer to either an unpredictable physical process, or a choice made by a computer algorithm that is not predetermined. Nondeterminism is often used in computing to describe algorithms that make decisions based on input data.

A foundational course that introduces formal languages, automata, computability, and complexity theories, including finite automata, Turing machines, and P/NP classes.