There is a new edition of this book available Introduction to Computation and Programming Using Python, 3e.

Introduction to Computation and Programming Using Python, 2e

With Application to Understanding Data

by Guttag

ISBN: 9780262364430 | Copyright 2017


This book introduces students with little or no prior programming experience to the art of computational problem solving using Python and various Python libraries, including PyLab. It provides students with skills that will enable them to make productive use of computational techniques, including some of the tools and techniques of data science for using computation to model and interpret data. The book is based on an MIT course (which became the most popular course offered through MIT’s OpenCourseWare) and was developed for use not only in a conventional classroom but in in a massive open online course (MOOC). This new edition has been updated for Python 3, reorganized to make it easier to use for courses that cover only a subset of the material, and offers additional material including five new chapters.

Students are introduced to Python and the basics of programming in the context of such computational concepts and techniques as exhaustive enumeration, bisection search, and efficient approximation algorithms. Although it covers such traditional topics as computational complexity and 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, and statistical techniques that inform (and misinform) as well as two related but relatively advanced topics: optimization problems and dynamic programming. This edition offers expanded material on statistics and machine learning and new chapters on Frequentist and Bayesian statistics.

This is the 'computational thinking' book we have all been waiting for! With humor and historical anecdotes, John Guttag conveys the breadth and joy of computer science without compromising technical detail. The second edition includes brand new material that focuses on computational approaches to understanding data, complementing traditional computational problem solving.

Jeannette M. Wing President's Professor of Computer Science and Department Head, Carnegie Mellon University

John Guttag is an extraordinary teacher and an extraordinary writer. This is not ‘a Python book,’ although you will learn Python. Nor is it a ‘programming book,’ although you will learn to program. It is a rigorous but eminently readable introduction to computational problem solving, and now also to data science—this second edition has been expanded and reorganized to reflect Python’s role as the language of data science.

Ed Lazowska Bill & Melinda Gates Chair in Computer Science & Engineering, University of Washington
Expand/Collapse All
Contents (pg. vii)
Preface (pg. xiii)
Acknowledgments (pg. xvii)
1 Getting Started (pg. 1)
2 Introduction to Python (pg. 7)
3 Some Simple Numerical Programs (pg. 25)
4 Functions, Scoping, and Abstraction (pg. 39)
5 Structured Types, Mutability, and Higher-Order Functions (pg. 65)
6 Testing and Debugging (pg. 85)
7 Exceptions and Assertions (pg. 101)
8 Classes and Object-Oriented Programming (pg. 109)
9 A Simplistic Introduction to Algorithmic Complexity (pg. 135)
10 Some Simple Algorithms and Data Structures (pg. 151)
11 Plotting and More About Classes (pg. 169)
12 Knapsack and Graph Optimization Problems (pg. 183)
13 Dynamic Programming (pg. 203)
14 Random Walks and More About Data Visualization (pg. 215)
15 Stochastic Programs, Probability, and Distributions (pg. 235)
16 Monte Carlo Simulation (pg. 275)
17 Sampling and Confidence Intervals (pg. 291)
18 Understanding Experimental Data (pg. 305)
19 Randomized Trials and Hypothesis Checking (pg. 327)
20 Conditional Probability and Bayesian Statistics (pg. 345)
21 Lies, Damned Lies, and Statistics (pg. 355)
22 A Quick Look at Machine Learning (pg. 371)
23 Clustering (pg. 383)
24 Classification Methods (pg. 403)
Python 3.5 Quick Reference (pg. 431)
Index (pg. 435)

John V. Guttag

John V. Guttag is the Dugald C. Jackson Professor of Computer Science and Electrical Engineering at MIT.