This book explores the exciting field of complexity. It features in-depth coverage of important theoretical areas, including fractals, chaos, non-linear dynamics, artificial life and self-organization. It also provides overviews of complexity in several applied areas, including parallel computation, control systems, neural systems and ecosystems. Some of the properties that best characterize complex systems, including algorithmic richness, non-linearity and abundant interactions between components are examined. In this way the book draws out themes, especially the ideas of connectivity and natural computation, that reveal deep, underlying similarities between phenomena that have formerly been treated as completely distinct. The idea of natural computation is particularly rich in fresh approaches applicable to both biology and computing. Analogies such as the DNA code as life's underlying program, or organisms as automata, are very compelling. Conversely, biologically inspired ideas such as cellular automata, genetic algorithms and neural networks are at the forefront of advanced computing.