Think Complexity 2e

DRAFT 2nd edition

by Allen B. Downey

Download the draft second edition in PDF.

Read the draft second edition online.

The first edition is still available here.


This book is about complexity science, data structures and algorithms, intermediate programming in Python, and the philosophy of science:

  • Complexity science is an interdisciplinary field—at the intersection of physics, mathematics, and computer science—that focuses on systems with many interacting components.
  • Data structures and algorithms: Data structures is an important and useful topic for software engineers, but it is often presented without motivation.  Complexity science provides an engaging context for this material.
  • Python programming: 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.
  • Philosophy of science: 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)

The LaTeX source and supporting code for this book are in this GitHub repository.