Theory and Applications of Cellular Automata