by Allen B. Downey
Download the second edition in PDF.
Read the second edition online.
All code from the book is in Jupyter notebooks you can run on Colab. This page has links to the notebooks.
The text and supporting code for this book is in this GitHub repository.
The first edition is still available here.
Complexity Science is an interdisciplinary
field—at the intersection of mathematics, computer science, and natural science—that focuses on discrete models of physical and
social systems. In particular, it focuses on complex systems, which are systems with many interacting components.
Complex systems include networks and graphs, cellular automatons, agent-based models and swarms, fractals and self-organizing systems, chaotic systems and cybernetic systems.
This book is primarily about complexity science, but studying complexity science gives you a chance to explore topics and ideas you might not encounter otherwise, practice programming in Python, and learn about data structures and algorithms.
This book picks up where Think Python leaves off. I assume that you have read that book or have equivalent knowledge of Python. As always, I try to emphasize fundamental ideas that apply to programming in many languages, but along the way you will learn useful features that are specific to Python.
The models and results in this book raise a number of questions relevant to the philosophy of science, including the nature of scientific laws, theory choice, realism and instrumentalism, holism and reductionism, and Bayesian epistemology.
Think Complexity is a free book, available under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0)