The design of circuits and systems whose inputs
and outputs are represented as discrete variables. These variables are commonly
binary, i.e. two-state, in nature. Design at the circuit level is usually done
with truth tables and state tables; design at the system level is done with
block diagrams or digital design languages.