preface but the bulk of this part of the book is devoted to topics not found in most introductory textsdata visualizationprobabilistic and statistical thinkingsimulation modelsand using computation to understand data part - looks at three slightly advanced topics--optimization problemsdynamic programmingand clustering part can form the basis of self-contained course that can be taught in quarter or half semester experience suggests that it is quite comfortable to fit both parts and of this book into full-semester course when the material in part is includedthe course becomes more demanding than is comfortable for many students the book has two pervasive themessystematic problem solving and the power of abstraction when you have finished this book you should havelearned languagepythonfor expressing computationslearned systematic approach to organizingwriting and debugging medium-sized programsdeveloped an informal understanding of computational complexitydeveloped some insight into the process of moving from an ambiguous problem statement to computational formulation of method for solving the problemlearned useful set of algorithmic and problem reduction techniqueslearned how to use randomness and simulations to shed light on problems that don' easily succumb to closed-form solutionsand learned how to use computational toolsincluding simple statistical and visualization toolsto model and understand data programming is an intrinsically difficult activity just as "there is no royal road to geometry," there is no royal road to programming it is possible to deceive students into thinking that they have learned how to program by having them complete series of highly constrained "fill in the blankprogramming problems howeverthis does not prepare students for figuring out how to harness computational thinking to solve problems if you really want to learn the materialreading the book will not be enough at the very least you should try running some of the code in the book all of the code in the book can be found at versions of the course have been available on mit' opencourseware (ocwweb site since the site includes video recordings of lectures and complete set of problem sets and exams since the fall of edx and mitxhave offered an online version of this course we strongly recommend that you do the problem sets associated with one of the ocw or edx offerings this was euclid' purported responsecirca bcto king ptolemy' request for an easier way to learn mathematics