This book introduces students with little or no prior programming experience to the art of computational problem solving using Python & various Python libraries including Py Lab. It provides students with skills that will enable them to make productive use of computational techniques including some of the tools & techniques of data science" for using computation to model & interpret data. The book is based on an MIT course (which became the most popular course offered through MIT's Open Course Ware) & was developed for use not only in a conventional classroom but in in a massive open online course (or MOOC) offered by the pioneering MIT--Harvard collaboration ed X. Students are introduced to Python & the basics of programming in the context of such computational concepts & techniques as exhaustive enumeration bisection search & efficient approximation algorithms. The book does not require knowledge of mathematics beyond high school algebra but does assume that readers are comfortable with rigorous thinking & not intimidated by mathematical concepts. Although it covers such traditional topics as computational complexity & simple algorithms the book focuses on a wide range of topics not found in most introductory texts including information visualization simulations to model randomness computational techniques to understand data & statistical techniques that inform (and misinform) as well as two related but relatively advanced topics: optimization problems & dynamic programming. Introduction to Computation & Programming Using Python can serve as a stepping-stone to more advanced computer science courses or as a basic grounding in computational problem solving for students in other disciplines."