Cellular automata: from a theoretical computational model to its application to complex systems