0% found this document useful (0 votes)
89 views6 pages

Programming Python: Computation Using

This document is the table of contents for the book "Introduction to Computation and Programming Using Python" by John V. Guttag. It provides an overview of the book's 15 chapters which cover topics like getting started with Python, functions and scoping, classes and object-oriented programming, algorithms and data structures, stochastic programs and probability, and experimental data analysis. The book uses Python to teach programming concepts and their applications in science, engineering, and mathematics.

Uploaded by

miketol
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
89 views6 pages

Programming Python: Computation Using

This document is the table of contents for the book "Introduction to Computation and Programming Using Python" by John V. Guttag. It provides an overview of the book's 15 chapters which cover topics like getting started with Python, functions and scoping, classes and object-oriented programming, algorithms and data structures, stochastic programs and probability, and experimental data analysis. The book uses Python to teach programming concepts and their applications in science, engineering, and mathematics.

Uploaded by

miketol
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Introduction to

Computation and

Programming Using Python

Revised and Expanded Edition

John V. Guttag

The MIT Press

Cambridge, Massachusetts

London, England
CONTENTS

PREFACE xiii

xv
ACKNOWLEDGMENTS

1 GETTING STARTED 1

2 INTRODUCTION TO PYTHON 7

The Basic Elements of 8


2.1 Python
9
2.1.1 Objects, Expressions, and Numerical Types

2.1.2 Variables and 11


Assignment

2.1.3 IDLE 13

2.2 14
Branching Programs
16
2.3 Strings and Input

2.3.1 18
Input

2.4 Iteration 18

3 SOME SIMPLE NUMERICAL PROGRAMS 21

3.1 Exhaustive Enumeration 21

3.2 For 23
Loops

and Bisection Search 25


3.3 Approximate Solutions

3.4 A Few Words About Using Floats 29

3.5 32
Newton-Raphson

ABSTRACTION 34
4 FUNCTIONS, SCOPING, and

Functions and 35
4.1 Scoping

4.1.1 Function Definitions 35

Values 36
4.1.2 Keyword Arguments and Default

4.1.3 37
Scoping
41
4.2 Specifications

4.3 Recursion 44

4.3.1 Fibonacci Numbers 45

4.3.2 Palindromes 48

4.4 Global Variables 50

4.5 Modules 51

4.6 Files 53
5 STRUCTURED TYPES, MUTABILITY, AND HIGHER-ORDER FUNCTIONS.. 56

5.1 Tuples 56

5.1.1 Sequences and Multiple Assignment 57

5.2 Lists and Mutability 58

5.2.1 Cloning 63

5.2.2 List Comprehension 63

5.3 Functions as Objects 64

5.4 Strings, Tuples, and Lists 66

5.5 Dictionaries 67

6 TESTING AND DEBUGGING 70

6.1 Testing 70

6.1.1 Black-Box Testing 71

6.1.2 Glass-Box Testing 73

6.1.3 Conducting Tests 74

6.2 Debugging 76

6.2.1 Learning to Debug 78

6.2.2 Designing the Experiment 79

6.2.3 When the Going Gets Tough 81

6.2.4 And When You Have Found "The" Bug 82

7 EXCEPTIONS AND ASSERTIONS 84

7.1 Handling Exceptions 84

7.2 Exceptions as a Control Flow Mechanism 87

7.3 Assertions 90

8 CLASSES AND OBJECT-ORIENTED PROGRAMMING 91

8.1 Abstract Data Types and Classes 91

8.1.1 Designing Programs Using Abstract Data Types 96

8.1.2 Using Classes to Keep Track of Students and Faculty 96

8.2 Inheritance 99

8.2.1 Multiple Levels of Inheritance 101

8.2.2 The Substitution Principle 102

8.3 Encapsulation and Information Hiding 103

8.3.1 Generators 106

8.4 Mortgages, an Extended Example 108


ix

9 A SIMPLISTIC INTRODUCTION TO ALGORITHMIC COMPLEXITY 113

9.1 Thinking About Computational Complexity 113

9.2 Asymptotic Notation 116

9.3 Some Important Complexity Classes 118

9.3.1 Constant Complexity 118

9.3.2 Logarithmic Complexity 118

9.3.3 Linear Complexity 119

9.3.4 Log-Linear Complexity 120

9.3.5 Polynomial Complexity 120

9.3.6 Exponential Complexity 121

9.3.7 Comparisons of Complexity Classes 123

10 SOME SIMPLE ALGORITHMS AND DATA STRUCTURES 125

10.1 Search Algorithms 126

10.1.1 Linear Search and Using Indirection to Access Elements 126

10.1.2 Binary Search and Exploiting Assumptions 128

10.2 Sorting Algorithms 131

10.2.1 Merge Sort 132

10.2.2 Exploiting Functions as Parameters 135

10.2.3 Sorting in Python 136

10.3 Hash Tables 137

11 PLOTTING AND MORE ABOUT CLASSES 141

11.1 Plotting Using PyLab 141

11.2 Plotting Mortgages, an Extended Example 146

12 STOCHASTIC PROGRAMS, PROBABILITY, AND STATISTICS 152

12.1 Stochastic Programs 153

12.2 Inferential Statistics and Simulation 155

12.3 Distributions 166

12.3.1 Normal Distributions and Confidence Levels 168

12.3.2 Uniform Distributions 170

12.3.3 Exponential and Geometric Distributions 171

12.3.4 Benford's Distribution 173

12.4 How Often Does the Better Team Win? 174

12.5 Hashing and Collisions 177


X

13 RANDOM WALKS AND MORE ABOUT DATA VISUALIZATION 179

13.1 The Drunkard's Walk 179

13.2 Biased Random Walks 186

13.3 Treacherous Fields 191

14 MONTE CARLO SIMULATION 193

14.1 Pascal's Problem 194

14.2 Pass or Don't Pass? 195

14.3 Using Table Lookup to Improve Performance 199

14.4 Finding * 200

14.5 Some Closing Remarks About Simulation Models 204

15 UNDERSTANDING EXPERIMENTAL DATA 207

15.1 The Behavior of Springs 207

15.1.1 Using Linear Regression to Find a Fit 210

15.2 The Behavior of Projectiles 214

15.2.1 Coefficient of Determination 216

15.2.2 Using a Computational Model 217

15.3 Fitting Exponentially Distributed Data 218

15.4 When Theory Is Missing 221

16 LIES. DAMNED LIES, AND STATISTICS 222

16.1 Garbage In Garbage Out (GIGO) 222

16.2 Pictures Can Be Deceiving 223

16.3 dim Hoc Ergo Propter Hoc 225

16.4 Statistical Measures Don't Tell the Whole Story 226

16.5 Sampling Bias 228

16.6 Context Matters 229

16.7 Beware of Extrapolation 229

16.8 The Texas Sharpshooter Fallacy 230

16.9 Percentages Can Confuse 232

16.10 Just Beware 233

17 KNAPSACK AND GRAPH OPTIMIZATION PROBLEMS 234

17.1 Knapsack Problems 234

17.1.1 Greedy Algorithms 235

17.1.2 An Optimal Solution to the 0/1 Knapsack Problem 238


17.2 Graph Optimization Problems 240

17.2.1 Some Classic Graph-Theoretic Problems 244

17.2.2 The Spread of Disease and Min Cut 245

17.2.3 Shortest Path: Depth-First Search and Breadth-First Search.... 246

18 DYNAMIC PROGRAMMING 252

18.1 Fibonacci Sequences, Revisited 252

18.2 Dynamic Programming and the 0/1 Knapsack Problem 254

261
18.3 Dynamic Programming and Divide-and-Conquer

19 A QUICK LOOK AT MACHINE LEARNING 262

19.1 Feature Vectors 264

19.2 Distance Metrics 266

19.3 Clustering 270

19.4 Types Example and Cluster 272

19.5 K-means Clustering 274

19.6 A Contrived Example 276

A Less Contrived 280


19.7 Example

19.8 286
Wrapping Up
287
PYTHON 2.7 QUICK REFERENCE

INDEX 289

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy