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 book offers students, practitioners and researchers a concise but broad coverage of the main aspects of cellular automata. The author of the book is an associate professor in the Department of Artificial Intelligence at UNED (Spanish Open University). Since the middle 1990s, he has performed teaching and research activities within the field of artificial intelligence, mainly in the areas of Bayesian networks and evolutionary computation. This book is the result of a long journey that started when the author became interested in NetLogo. NetLogo is an agent]based programming environment well suited for modeling and inspecting complex systems developing over time.