Jump to ratings and reviews
Rate this book

Think Complexity: Complexity Science and Computational Modeling

Rate this book
Expand your Python skills by working with data structures and algorithms in a refreshing context―through an eye-opening exploration of complexity science. Whether you’re an intermediate-level Python programmer or a student of computational modeling, you’ll delve into examples of complex systems through a series of exercises, case studies, and easy-to-understand explanations. You’ll work with graphs, algorithm analysis, scale-free networks, and cellular automata, using advanced features that make Python such a powerful language. Ideal as a text for courses on Python programming and algorithms, Think Complexity will also help self-learners gain valuable experience with topics and ideas they might not encounter otherwise.

156 pages, Paperback

First published March 20, 2009

85 people are currently reading
1131 people want to read

About the author

Allen B. Downey

37 books233 followers
Allen Downey is a Professor Emeritus at Olin College and the author of a series of freetextbooks related to software and data science, including Think Python, Think Bayes, and Think Complexity, which are also published by O’Reilly Media. His blog, Probably Overthinking It, features articles on Bayesian probability and statistics. He holds a Ph.D. in computer science from U.C. Berkeley, and M.S. and B.S. degrees from MIT.

Ratings & Reviews

What do you think?
Rate this book

Friends & Following

Create a free account to discover what your friends think of this book!

Community Reviews

5 stars
68 (27%)
4 stars
108 (44%)
3 stars
51 (20%)
2 stars
15 (6%)
1 star
3 (1%)
Displaying 1 - 17 of 17 reviews
Profile Image for محمد.
Author 1 book401 followers
October 30, 2015
Philosophy of science when it meets computer algorithms and software. The book is very mind opening, telling the reader that there is a land in human knowledge and thinking and research and just points towards this land. The book aims at asking questions more than answering them.

The only negative point about this book is that it tires to explain to someone who almost knows nothing about algorithms and data structures, so it spends some time explaining some basics like graph, and then moves to some philosophical concepts regarding graph. I think that if you are a novice programmer you cannot get the full potential of those concepts, and if you have some experience in programming you will be skipping a lot of pages.
Profile Image for Louis.
226 reviews30 followers
April 30, 2012
In operations research, among modelers it is a truism that models are for insights, not numbers. And the ability to provide insight is even more important than the ability to provide proofs that the model is correct or that the methodology is efficient or accurate. Think Complexity is an introduction to computational modeling for the purposes of finding this insight in areas that defy proof techniques.

Complexity science is an area that is easy to hype. I admit to being highly skeptical when a student and co-advisor wished to introduce these concepts into a thesis. What Downey does in Think Complexity is to introduce the concepts and give computational examples. And instead of being a promoter he provides the tools for someone to explore and ask the questions of the models and consider if the insights presented by the models are believable.

The beginning of the book is an overview of philosophy of science, to set the stage for thinking about this type of model. Next is an overview of Python data structures and analysis of algorithms. Once past this, then you get more in depth coverage of implementation of different types of models used to explore complex systems. And here the emphasis is teaching enough to follow the example, with links to Wikipedia given for more formal introductions to the topic (and the Wikipedia articles seem chosen for quality of the article and the references for the dedicated.)

To properly do the exercises, one would have to be a good Python programmer, and these would be serious exercises in the application of data structures. But even if the focus was on an introduction to complexity science, being able to run and modify the examples made this a more useful introduction to the field of complex systems and models for emergent behavior than other works that I have seen. Running and playing with the examples makes a greater impact than the text explanation, and in this Think Complexity is a success.

Disclaimer: I received a free copy of an electronic version of this book through the O'Reilly Blogger Program.
Profile Image for Paco Nathan.
Author 10 books57 followers
January 14, 2019
An empirical approach to understanding complexity, randomness, and "emergence" in general. Each chapter considers a different area of problems, providing clear hands-on examples that (in the second edition) are available in Jupyter notebooks plus a sprinkling of links out to more detailed discussions across the interwebs. Much of the focus here draws a distinction between classical models that tend to be based on laws and have analytic solutions (deterministic) versus the newer tooling for science that is often much more empirical based on simulations and lots of computation (stochastic).

The general notion that relatively simple, deterministic components at scale can lead to complex systems which are non-deterministic calls into question some of the normative positions which so many people take for granted. For instance, is there (for lack of a better term) an Abrahamic god up in the sky who sees everything and orchestrates everything? Is it reasonable to *not* believe in theories of evolution?

Highly recommended, especially in data science curriculums or people wanting to explore some of the more interesting foundations of AI, since this book brings into question the decision-making facilities of people who operate on "gut feel", "first principles", and other (IMO) aristotelian justifications -- without leveraging computable processes of investigation and verification.
73 reviews3 followers
April 7, 2012
A great read for anyone interested in Python or, more importantly, in how one might use Python or some other programming language to model such things as groups of agents exhibiting intelligent-seeming behaviour (my favourite), or fractals, or to use readily-available Python packages to easily construct competent graphs. Some not insignificant mathematical ability is required to fully appreciate some of what is discussed: manipulation of equations, logarithms and so on. However, I felt I still got something out of skimming through the parts with mathematics I was too rusty on to comprehend completely.

One thing I found off-putting at first was the use of Wikipedia links as further reading. However, whatever one's personal stance on the practice in general I think this is appropriate for the intended audience of the book: people who are capable of directing their own learning and wish mainly to be introduced to ideas so that they can seek out further information themselves. Wikipedia is indeed in many cases a very good place to at the very least gather a basic enough understanding of a topic to work out where to go to learn more. This book itself is designed with the purpose of introducing a great many ideas rather than delving too deeply into any of them, and provides books as well as Wikipedia links where further information might be found.

All in all this is something I feel I read at exactly the right time and I am sure many of the things I was introduced to by reading will prove useful to me in ways I cannot now know of.
16 reviews
December 19, 2013
It is almost 2 months for me to go through this book. Allen B Downey chooses 5 complex structures that we usually rely on third party libraries. These are: Graph, Scale-free Networks, Cellular Automata and fractals.

It is quite interesting to see complex algorithm explained using Python.

Allen started explaining what is Complex system with the example of how can you explain 'why planets are elliptical'. Interestingly he explained how people choose hard way with differential equation and another simple interesting way. :)

The interesting narration keep continuous on chapter for Graph. The third chapter explains the nature of algorithm and big O stuffs. This is quite normal.

The chapters for Scale Free Networks, Cellular Automata and fractals are the highlighted and main parts.

I appreciated that Allen allocates four full chapters on Case Studies to apply the concepts that he explained.

Whether you learned algorithm and data structures or not, I recommend to read this book that take you towards the new 'Complex' world.
Profile Image for Franck Chauvel.
119 reviews5 followers
September 28, 2015
I am disappointing by this book. I see it more like a study guide with a lot's of external resources to fetch and read (scientific publications or wikipedia articles) as well as programming exercises, and finally not much content. To give an example, the part about programming covering data structure and algorithm complexity is not related to complexity. Having already been programming, and having read a couple of books on the subjects such as Complex Adaptive Systems: An Introduction to Computational Models of Social Life, I did not get much new insight.
Profile Image for Ray Pace.
8 reviews
April 28, 2014
I found it interesting for a quick thought about some complex problems addessed ina simple model.
Profile Image for Giovanni.
12 reviews17 followers
May 25, 2019
A quick and shallow run through some computational modeling topics. Not what I was looking for unfortunately.
12 reviews1 follower
April 3, 2012
This one is not an easy one. Allen guides you through the various, complex, algorithms and data structures. This book is not for a beginners – you have to know Python already to solve exercises presented by author. The complexity of the book itself is also rather for slightly advanced developers. If you just start your journey with Python development it may be hard to follow.

What I liked, however, is the way Allen presents the material. He tries to show you different aspects of the development process and refers not only to computer science but to philosophy and mathematics as well. Even if you won’t be able to solve all the presented puzzles it is still worth getting through the book.

Few remarks regarding what I really liked in the book. First of all, Allen provides you with lots of references. So, if you are interested in particular topic, you have plenty of sources to start with. Secondly, Allen provides you with references to Wikipedia very often. This is not regarded usually as a good source among “university like people”, however I like this kind of approach a lot.
Profile Image for Neal Aggarwal.
72 reviews13 followers
June 20, 2014
Fabulous book. The example code really gets driven home if you key it all in and struggle to understand the math. There is quite a bit of math here folks, remember that. All can be researched on-line though and the book extensively refers to Wikipedia which is fine for the likes of autodidacts like me.
Profile Image for Danny.
4 reviews3 followers
April 11, 2014
Good book! A programmatic tour of complexity.
Profile Image for Kaung Htet Zaw.
28 reviews26 followers
November 11, 2015
Covers python programming, computational modelling and philosophy of science.
Profile Image for Sandeep Nair.
62 reviews4 followers
June 28, 2024
If you are tired of the hand-wavy non-technical "Introduction to Complexity" books but also don't want to read a textbook on a single subtopic, this blog-like book will provide the right balance.

It still only provides a high-level introduction to concepts but does so in a "try it and see for yourself" manner.

There are links to code, inspiring practice exercises, and references to good quality Wiki vs. unreadable academic papers.

But, it helps to already know a little about Complexity (perhaps through some of the non technical books) to make most of this book.
Profile Image for Dirk.
166 reviews10 followers
June 11, 2021
brilliant, loved all the topics, I knew lots already but presented in great clarity
Displaying 1 - 17 of 17 reviews

Can't find what you're looking for?

Get help and learn more about the design.