Circuit complexity is a model for computation that uses Boolean circuits to simulate functions. A Boolean circuit is a collection of gates like AND, OR, and NOT connected by wires without cycles. Circuit families can represent languages by having a circuit for each string length. The size and depth complexity of a circuit family is the minimum size and depth needed among equivalent circuits. The circuit satisfiability problem (CIRCUIT-SAT) of determining if a circuit outputs 1 for some input assignment is NP-complete, showing that circuit simulation is a hard problem.