this book is based on an mit course that has been offered twice year since the course is aimed at students with little or no prior programming experience who have desire to understand computational approaches to problem solving each yeara few of the students in the class use the course as stepping stone to more advanced computer science courses but for most of the students it will be their only computer science course because the course will be the only computer science course for most of the studentswe focus on breadth rather than depth the goal is to provide students with brief introduction to many topicsso that they will have an idea of what' possible when the time comes to think about how to use computation to accomplish goal that saidit is not "computation appreciationcourse it is challenging and rigorous course in which the students spend lot of time and effort learning to bend the computer to their will the main goal of this book is to help youthe readerbecome skillful at making productive use of computational techniques you should learn to apply computational modes of thoughts to frame problems and to guide the process of extracting information from data in computational manner the primary knowledge you will take away from this book is the art of computational problem solving the book is bit eccentric part - is an unconventional introduction to programming in python we braid together four strands of materialthe basics of programmingthe python programming languageconcepts central to understanding computationand computational problem solving techniques we cover most of python' featuresbut the emphasis is on what one can do with programming languagenot on the language itself for exampleby the end of the book has covered only small fraction of pythonbut it has already introduced the notions of exhaustive enumerationguess-and-check algorithmsbisection searchand efficient approximation algorithms we introduce features of python throughout the book similarlywe introduce aspects of programming methods throughout the book the idea is to help you learn python and how to be good programmer in the context of using computation to solve interesting problems part - is primarily about using computation to solve problems it assumes no knowledge of mathematics beyond high school algebrabut it does assume that the reader is comfortable with rigorous thinking and not intimidated by mathematical concepts it covers some of the usual topics found in an introductory texte computational complexity and simple algorithms