Cellular automata are discrete, abstract computational systems that have found application in modeling complex systems with simple rules. They consist of a grid of cells, each of which can be in one of a finite number of states, evolving over discrete time steps according to a set of rules based on the states of neighboring cells.