Synopses & Reviews
Expand your Python skills by working with data structures and algorithms in a refreshing context—through an eye-opening exploration of complexity science. Whether youre an intermediate-level Python programmer or a student of computational modeling, youll delve into examples of complex systems through a series of exercises, case studies, and easy-to-understand explanations.
Youll 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
Synopsis
Dive into Pythons advanced possibilities, including algorithm analysis, graphs, scale-free networks, and cellular automata with this in-depth, hands-on guide. Whether youre an intermediate-level Python programmer, or a student of computational modeling, youll examine data structures, complexity science, and other fascinating topics through a series of exercises, easy-to-understand explanations, and case studies.
Think Complexity presents features that make Python such a simple and powerful language. Author Allen Downey provides code to help you get started, along with a solution for each exercise. With this book, you will:
- Work with graphs and graph algorithms, NumPy arrays and SciPy methods, basic signal processing and Fast Fourier Transform, and hash tables.
- Discover complexity science, the field that studies abstract models of complex physical systems, including power laws, fractals and pink noise, and Turing machines.
- Explore the philosophy of science through the models and results in this book about the nature of scientific laws, theory choice, and realism and instrumentalism, and more.
About the Author
Allen Downey is an Associate Professor of Computer Science at the Olin College of Engineering. He has taught computer science at Wellesley College, Colby College and U.C. Berkeley. He has a Ph.D. in Computer Science from U.C. Berkeley and Masters and Bachelors degrees from MIT.
Table of Contents
Preface; Why I Wrote This Book; Suggestions for Teachers; Suggestions for Autodidacts; Contributor List; Conventions Used in This Book; Using Code Examples; Safari® Books Online; How to Contact Us; Chapter 1: Complexity Science; 1.1 What Is This Book About?; 1.2 A New Kind of Science; 1.3 Paradigm Shift?; 1.4 The Axes of Scientific Models; 1.5 A New Kind of Model; 1.6 A New Kind of Engineering; 1.7 A New Kind of Thinking; Chapter 2: Graphs; 2.1 What's a Graph?; 2.2 Representing Graphs; 2.3 Random Graphs; 2.4 Connected Graphs; 2.5 Paul Erdős: Peripatetic Mathematician, Speed Freak; 2.6 Iterators; 2.7 Generators; Chapter 3: Analysis of Algorithms; 3.1 Order of Growth; 3.2 Analysis of Basic Python Operations; 3.3 Analysis of Search Algorithms; 3.4 Hashtables; 3.5 Summing Lists; 3.6 pyplot; 3.7 List Comprehensions; Chapter 4: Small World Graphs; 4.1 Analysis of Graph Algorithms; 4.2 FIFO Implementation; 4.3 Stanley Milgram; 4.4 Watts and Strogatz; 4.5 Dijkstra; 4.6 What Kind of Explanation Is That?; Chapter 5: Scale-Free Networks; 5.1 Zipf's Law; 5.2 Cumulative Distributions; 5.3 Continuous Distributions; 5.4 Pareto Distributions; 5.5 Barabási and Albert; 5.6 Zipf, Pareto, and Power Laws; 5.7 Explanatory Models; Chapter 6: Cellular Automata; 6.1 Stephen Wolfram; 6.2 Implementing CAs; 6.3 CADrawer; 6.4 Classifying CAs; 6.5 Randomness; 6.6 Determinism; 6.7 Structures; 6.8 Universality; 6.9 Falsifiability; 6.10 What Is This a Model Of?; Chapter 7: Game of Life; 7.1 Implementing Life; 7.2 Life Patterns; 7.3 Conway's Conjecture; 7.4 Realism; 7.5 Instrumentalism; 7.6 Turmites; Chapter 8: Fractals; 8.1 Fractal CAs; 8.2 Percolation; Chapter 9: Self-Organized Criticality; 9.1 Sand Piles; 9.2 Spectral Density; 9.3 Fast Fourier Transform; 9.4 Pink Noise; 9.5 Reductionism and Holism; 9.6 SOC, Causation, and Prediction; Chapter 10: Agent-Based Models; 10.1 Thomas Schelling; 10.2 Agent-Based Models; 10.3 Traffic Jams; 10.4 Boids; 10.5 Prisoner's Dilemma; 10.6 Emergence; 10.7 Free Will; Chapter 11: Case Study: Sugarscape; 11.1 The Original Sugarscape; 11.2 The Occupy Movement; 11.3 A New Take on Sugarscape; 11.4 Taxation and the Leave Behind; 11.5 The Gini Coefficient; 11.6 Results with Taxation; 11.7 Conclusion; Chapter 12: Case Study: Ant Trails; 12.1 Introduction; 12.2 Model Overview; 12.3 API Design; 12.4 Sparse Matrices; 12.5 wx; 12.6 Applications; Chapter 13: Case Study: Directed Graphs and Knots; 13.1 Directed Graphs; 13.2 Implementation; 13.3 Detecting Knots; 13.4 Knots in Wikipedia; Chapter 14: Case Study: The Volunteer's Dilemma; 14.1 The Prairie Dog's Dilemma; 14.2 Analysis; 14.3 The Norms Game; 14.4 Results; 14.5 Improving the Chances; Call for Submissions; Reading List; Colophon;