Before you keep reading...
Runestone Academy can only continue if we get support from individuals like you. As a student you are well aware of the high cost of textbooks. Our mission is to provide great books to you for free, but we ask that you consider a $10 donation, more if you can or less if $10 is a burden.
Before you keep reading...
Making great stuff takes time and $$. If you appreciate the book you are reading now and want to keep quality materials free for other students please consider a donation to Runestone Academy. We ask that you consider a $10 donation, but if you can give more thats great, if $10 is too much for your budget we would be happy with whatever you can afford as a show of support.
1.3. Changes from the Second Edition of Think Complexity¶
by Jan Pearce
I have been teaching from Allen Downey’s excellent Think Complexity for a number of years now. I was motivated to create a Runestone edition of this book, so it could be interactive. I also plan to add some additional material on computational complexity in addition to the material on complexity science.
Thus far, I have added a chapter on algorithm analysis based on a chapter in Problem Solving with Algorithms and Data Structures using C++ by Brad Miller, David Ranum, and Jan Pearce. To facilitate online work, the possibility of using Google Colaboratory notebooks has been added in addition to the original Jupyter Noteooks written by Allen Downey.
In future editions, I plan to add more material on the traveling salesman problem and the use of heuristics as well as complexity classes as well as the important P vs NP problem.
1.4. Changes from the First Edition of Think Complexity¶
by Allen Downey
For the second edition, I added two chapters, one on evolution, the other on the evolution of cooperation.
In the first edition, each chapter presented background on a topic and suggested experiments the reader could run. For the second edition, I have done those experiments. Each chapter presents the implementation and results as a worked example, then suggests additional experiments for the reader.
For the second edition, I replaced some of my own code with standard libraries like NumPy and NetworkX. The result is more concise and more efficient, and it gives readers a chance to learn these libraries.
Also, the Jupyter notebooks are new. For every chapter there are two notebooks: one contains the code from the chapter, explanatory text, and exercises; the other contains solutions to the exercises.
Finally, all supporting software has been updated to Python 3 (but most of it runs unmodified in Python 2).