Think Complexity
Complexity Science and Computational Modeling
Publisher: O'Reilly Media
Final Release Date: February 2012
Pages: 160

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.

  • Work with NumPy arrays and SciPy methods, basic signal processing and Fast Fourier Transform, and hash tables
  • Study abstract models of complex physical systems, including power laws, fractals and pink noise, and Turing machines
  • Get starter code and solutions to help you re-implement and extend original experiments in complexity
  • Explore the philosophy of science, including the nature of scientific laws, theory choice, realism and instrumentalism, and other topics
  • Examine case studies of complex systems submitted by students and readers
Table of Contents
Product Details
About the Author
Colophon
Recommended for You
Customer Reviews

REVIEW SNAPSHOT®

by PowerReviews
oreillyThink Complexity
 
4.3

(based on 7 reviews)

Ratings Distribution

  • 5 Stars

     

    (2)

  • 4 Stars

     

    (5)

  • 3 Stars

     

    (0)

  • 2 Stars

     

    (0)

  • 1 Stars

     

    (0)

100%

of respondents would recommend this to a friend.

Pros

  • Helpful examples (6)
  • Concise (4)
  • Well-written (4)
  • Accurate (3)

Cons

    Best Uses

    • Intermediate (6)
      • Reviewer Profile:
      • Developer (3)

    Reviewed by 7 customers

    Sort by

    Displaying reviews 1-7

    Back to top

     
    5.0

    Interesting read

    By Si

    from Bristol, UK

    About Me Developer

    Verified Buyer

    Pros

    • Concise
    • Well-written

    Cons

      Best Uses

      • Intermediate

      Comments about oreilly Think Complexity:

      This is an interesting and well written book. Ideas and concepts of complexity theory are clearly described and then demonstrated in Python. Python is a good choice of language as it's expressive and readable.

      This isn't a book which will teach you how to write code but rather a book that explains the fundamentals of how to approach algorithm design.

       
      4.0

      I would buy this product again and again

      By nilo

      from Boa Vista, Roraima, Brazil

      About Me Educator, Maker

      Verified Reviewer

      Pros

      • Easy to understand
      • Helpful examples

      Cons

        Best Uses

        • Novice
        • Student

        Comments about oreilly Think Complexity:

        We can learn as to make simulation.

        (4 of 4 customers found this review helpful)

         
        4.0

        Where Rubber meets the Road

        By Eric Chou

        from Seattle, WA

        About Me Sys Admin

        Pros

        • Helpful examples
        • Well-written

        Cons

          Best Uses

          • Intermediate

          Comments about oreilly Think Complexity:

          I really like this book, but I feel I could get a lot more out of this book if I had a more solid understanding that was introduced in the author's "Think Python" book. This is obviously by no fault of the book itself, just a fair warning to people whom may be in the same boat. I plan to go thru "Think Python" and re-read this book again. Readers need some intermediate Python chops and some understanding in scientific methodology prior to this book in order to maximize the benefits. And yes, as other review mentioned, plan to spend a fair amount of time to read up on all the references. I read the book digitally via Kindle app, so it was easy to link to the Wiki pages, but I can see some frustration if one was using a printed version. Also plan on doing a fair amount of coding in the exercises.

          It was interesting how the author organized the idea shift in scientific thinking of the complexity science. If one is familiar with the works like Malcolm Gladwell in "Blink", "Outliers" or similarly in "Freakonomics" one can clearly related to the method of using simulation-based computational model to solve problems that are non-linear with large composite, many-to-many elements. Many of the TED talks I have seen also employed this line of method in arriving at their respective conclusions.

          The middle section of the book introduced various models and approaches into solving complex problems. I absolutely love the fact that the theories were broken down into small pieces of problems that can be illustrated by small Python programs. Of the examples, the sections on Dijkstra algorithm and scale-free networks were the most interesting to me. As network engineer whom have dealt with OSPF and IS-IS on regular basis, I never thought it was possible to simulate the algorithm via Python. That was a treat. I also have some ideas inspired by the scale-free networks section that I feel I can apply to work.

          Bottom line, if Professor Downey ever opens an online class for "Think Complexity" either synchronized or on UDemy I would sign up in a heartbeat. Cheers.

          (2 of 2 customers found this review helpful)

           
          5.0

          Useful and quite insightful

          By Dani7B

          from Rome, Italy

          Verified Reviewer

          Pros

          • Concise
          • Helpful examples
          • Well-written

          Cons

            Best Uses

            • Intermediate

            Comments about oreilly Think Complexity:

            I've found this book extremely interesting. First of all, it actually maps concepts from the Mathematical and Computer worlds to the real world problems. During my academic career I've often wondered "I'm studying this, but what is that for? Are there practical application of these theory?". It turns out there actually are.
            This book also sheds a light on so many problems/theories I didn't even know existed, with quite a witty sense of humour. I'd recommend this book to Computer Engineers like me who want to broaden their horizons and to all those people who really want to bring their knowledge of Python to a different kind of level. There are so many examples and references that this book doesn't seem only 160 pages long.
            I'd suggest reading this book on an e-book reader, since it's easier to navigate through URLs and Wikipedia pages.

            (1 of 1 customers found this review helpful)

             
            4.0

            Challenging but rewarding

            By mko

            from Poland

            Verified Reviewer

            Pros

            • Accurate
            • Concise
            • Helpful examples

            Cons

              Best Uses

              • Intermediate

              Comments about oreilly Think Complexity:

              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.

              (2 of 2 customers found this review helpful)

               
              4.0

              Think Complexity

              By DDD

              from Italy

              About Me Developer

              Verified Reviewer

              Pros

              • Accurate
              • Easy to understand
              • Helpful examples
              • Well-written

              Cons

              • Too many references

              Best Uses

              • Intermediate

              Comments about oreilly Think Complexity:

              If like me you think this book will explain you the complexity theory of algorithms and teach you how to write faster code you are out of the road.
              Instead, this book shows various models that allows to simulate experimentally the behavious of real complex system.
              Another aspect who the author try to explain through all the book, is the validity and the robustness of explanations of complex system behaviours given with computational models compared to the "old science" approach, based on formulas and mathematically explainable relations .

              In the preface the author indicates three major topics the book will cover: Python programming, Computational Modeling and Philosophy of science. While the last two topics are covered deeply, trough the book and in the references, the Python programming (one of the reasons i choose this book) is very basic and the references to other libraries doesn't makes the code more complex. So, this book is not for pure practical programmers who want to learn advanced features of python, which are covered better in books like "Dive into Python" and "Think Python".

              Computational modeling is explained widely thanks to exercises, references and case studies. Starting from systems describable through graphs, the book continues explaining systems that present a specific distribution of events and how to model these distributions and extract the relations between the parameter of the model. Cellular automata is explained and used to generate some behaviors like randomness or other models as fractals, percolation. Other models are described to show the behaviors of some critical systems, systems in transition between to states, as freezing waters and pink noise. The last models described are the Agent-based models and examples as traffic jams and bird flocks are used to explain them.

              For what concern the Philosophy of Science, the author tries to induce into the reader what "Thomas Kuhn" introduced as "Paradigm shift", a shift from old science to complexity science, where complex models gives the same satisfaction of equations.
              To better explain this concept, I report an example of the book:

              "The development of complexity science is not the replacement of an older model, but (in my opinion) a gradual shift in the criteria by which models are judged and in the kinds of models that are considered acceptable.For example, classical models tend to be law-based, expressed in the form of equations, and solved by mathematical derivation.Instead, models that fall under the umbrella of complexity are often rule-based, expressed as computations, and simulated rather than analyzed. Not everyone finds these models satisfactory. For example, in Sync, Steven Strogatz writes about his model of spontaneous synchronization in some species of fireflies. He presents a simulation that demonstrates the phenomenon, but then writes:
              I repeated the simulation dozens of times, for other random initial conditions and for
              other numbers of oscillators. Sync every time. The challenge now was to prove it. Only
              an ironclad proof would demonstrate, in a way that no computer ever could, that sync
              was inevitable; and the best kind of proof would clarify why it was inevitable."

              Pros of the book are the exercises and the presence of case studies at the end of the it with which the reader can practice. Also, each chapter contains both sections where models and implementations are explained and sections where papers shows real-system with their derived model.
              One of the cons of this book is the huge presence of external references to papers and wiki pages. Of course is practically impossible fill a single book with all the topics related to the models explained but, the continuous "goto" and come back impact on the readability.

              This book is a good reading for Computer scientist who wants to learn about complex systems and the data-structures related. For who is interested on the philosophy aspect of complexity, the book proposes in each chapter the validity of this method and how can be applied to study complex system where a clear definition of laws and equations is impossible. The author stimulate the curiosity of the reader through the book, asking to implement and critically analyze models looking for analogies and differences. Even if I consider myself a pure practical programmer, this book interested me because describes the behavior of real-system through models that I can reassemble to apply them to other problems, providing also methods and tools to analyze the results of the tests compared to the real system behavior.

              (1 of 1 customers found this review helpful)

               
              4.0

              Entry point of complexity theory

              By hu

              from Tokyo, Japan

              About Me Developer

              Verified Reviewer

              Pros

              • Accurate
              • Concise
              • Helpful examples

              Cons

                Best Uses

                • Intermediate

                Comments about oreilly Think Complexity:

                The author starts from introduction what the complexity theory is and why the specific problem can't be resolved with traditional approach precisely.
                After the introduction, it starts from basic algorithm explanation of graph, hash map, iterator, and how to estimate the calculation cost with sample codes and the concrete estimation procedure. All of sample codes are written in Python. After the basic algorithms, many themes of computational complexity theory like game theory and multi-agent system and so forth are introduced with detail theory and some parts of simulation codes and consideration of the result. The readers can start any sections they have interest in. When the readers would like to deep into more, the introduced additional pointer and reading list are helpful.

                Displaying reviews 1-7

                Back to top

                 
                Buy 2 Get 1 Free Free Shipping Guarantee
                Buying Options
                Immediate Access - Go Digital what's this?
                Ebook: $33.99
                Formats:  DAISY, ePub, Mobi, PDF
                Print & Ebook: $43.99
                Print: $39.99