Cellular automata have been used in computer science since the 1940s. A cellular automaton consists of many identical simple processing units that interact with each other in a local way and in discrete time. Cellular automata have been applied to a wide variety of tasks and, due to the growing interest of the scientific community, a good number of relevant journals and conferences are dedicated to their study and development. One of the main characteristics of cellular automata is their simplicity, which makes them relatively easy to program. Nonetheless, despite their simplicity, cellular automata are able to generate complex results in many domains, even in the context of artificial life. Another remarkable characteristic of cellular automata is that they are suitable for parallel implementation.The present book deals with the fundamentals of cellular automata. Additionally, a new approach to extending cellular automata with the use of message passing is introduced. Each of the seven chapters of this book includes a number of figures, bibliographic references, and exercises of interest to the reader. The