Think Complexity 2e

DRAFT 2nd edition

by Allen B. Downey

Buy this book on Amazon.

Download the draft second edition in PDF.

Read the draft second edition online.

Supporting code for this book is in this GitHub repository.

The second edition will be published by O’Reilly Media in Spring 2018.  In the meantime, the first edition is still available here.


Cover of Think Complexity


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)