"How to Think Like a Computer Scientist: Learning with Python" is an introduction to computer science using the Python programming language. It covers the basics of computer programming, including variables and values, functions, conditionals and control flow, program development and debugging. Later chapters cover basic algorithms and data structures.
Author(s): Allen B. Downey, Jeffrey Elkner, Chris Meyers
Publisher: Green Tea Press
Year: 2002
Language: English
Pages: 288
Foreword......Page 5
How and why I came to use Python......Page 7
Finding a textbook......Page 8
Introducing programming with Python......Page 9
Building a community......Page 11
Contributor List......Page 13
Contents......Page 17
1.1 The Python programming language......Page 27
1.2 What is a program?......Page 29
1.3.1 Syntax errors......Page 30
1.3.4 Experimental debugging......Page 31
1.4 Formal and natural languages......Page 32
1.6 Glossary......Page 34
2.1 Values and types......Page 37
2.2 Variables......Page 38
2.3 Variable names and keywords......Page 39
2.4 Statements......Page 40
2.5 Evaluating expressions......Page 41
2.7 Order of operations......Page 42
2.8 Operations on strings......Page 43
2.10 Comments......Page 44
2.11 Glossary......Page 45
3.1 Function calls......Page 47
3.3 Type coercion......Page 48
3.4 Math functions......Page 49
3.5 Composition......Page 50
3.6 Adding new functions......Page 51
3.7 Denitions and use......Page 53
3.9 Parameters and arguments......Page 54
3.11 Stack diagrams......Page 56
3.13 Glossary......Page 58
4.2 Boolean expressions......Page 61
4.3 Logical operators......Page 62
4.5 Alternative execution......Page 63
4.6 Chained conditionals......Page 64
4.7 Nested conditionals......Page 65
4.9 Recursion......Page 66
4.10 Stack diagrams for recursive functions......Page 68
4.12 Keyboard input......Page 69
4.13 Glossary......Page 70
5.1 Return values......Page 73
5.2 Program development......Page 74
5.3 Composition......Page 77
5.4 Boolean functions......Page 78
5.5 More recursion......Page 79
5.6 Leap of faith......Page 81
5.7 One more example......Page 82
5.8 Checking types......Page 83
5.9 Glossary......Page 84
6.1 Multiple assignment......Page 85
6.2 The while statement......Page 86
6.3 Tables......Page 88
6.4 Two-dimensional tables......Page 90
6.5 Encapsulation and generalization......Page 91
6.6 More encapsulation......Page 92
6.7 Local variables......Page 93
6.8 More generalization......Page 94
6.9 Functions......Page 95
6.10 Glossary......Page 96
7.1 A compound data type......Page 97
7.3 Traversal and the for loop......Page 98
7.5 String comparison......Page 100
7.6 Strings are immutable......Page 101
7.8 Looping and counting......Page 102
7.9 The string module......Page 103
7.10 Character classication......Page 104
7.11 Glossary......Page 105
8.1 List values......Page 107
8.2 Accessing elements......Page 108
8.3 List length......Page 109
8.5 Lists and for loops......Page 110
8.6 List operations......Page 111
8.8 Lists are mutable......Page 112
8.9 List deletion......Page 113
8.10 Objects and values......Page 114
8.12 Cloning lists......Page 115
8.13 List parameters......Page 116
8.15 Matrixes......Page 117
8.16 Strings and lists......Page 118
8.17 Glossary......Page 119
9.1 Mutability and tuples......Page 121
9.2 Tuple assignment......Page 122
9.4 Random numbers......Page 123
9.5 List of random numbers......Page 124
9.6 Counting......Page 125
9.7 Many buckets......Page 126
9.8 A single-pass solution......Page 128
9.9 Glossary......Page 129
Dictionaries......Page 131
10.1 Dictionary operations......Page 132
10.2 Dictionary methods......Page 133
10.4 Sparse matrices......Page 134
10.5 Hints......Page 135
10.6 Long integers......Page 137
10.8 Glossary......Page 138
Files and exceptions......Page 141
11.1 Text les......Page 143
11.2 Writing variables......Page 144
11.4 Pickling......Page 147
11.5 Exceptions......Page 148
11.6 Glossary......Page 150
12.1 User-dened compound types......Page 153
12.2 Attributes......Page 154
12.4 Sameness......Page 155
12.5 Rectangles......Page 157
12.7 Objects are mutable......Page 158
12.8 Copying......Page 159
12.9 Glossary......Page 161
13.1 Time......Page 163
13.2 Pure functions......Page 164
13.3 Modiers......Page 165
13.4 Which is better?......Page 166
13.5 Prototype development versus planning......Page 167
13.7 Algorithms......Page 168
13.8 Glossary......Page 169
14.1 Object-oriented features......Page 171
14.2 printTime......Page 172
14.3 Another example......Page 173
14.4 A more complicated example......Page 174
14.5 Optional arguments......Page 175
14.6 The initialization method......Page 176
14.7 Points revisited......Page 177
14.8 Operator overloading......Page 178
14.9 Polymorphism......Page 179
14.10 Glossary......Page 181
15.2 Card objects......Page 183
15.3 Class attributes and the str method......Page 185
15.4 Comparing cards......Page 186
15.6 Printing the deck......Page 187
15.7 Shuing the deck......Page 189
15.8 Removing and dealing cards......Page 190
15.9 Glossary......Page 191
16.1 Inheritance......Page 193
16.2 A hand of cards......Page 194
16.4 Printing a Hand......Page 195
16.6 OldMaidHand class......Page 197
16.7 OldMaidGame class......Page 199
16.8 Glossary......Page 203
17.2 The Node class......Page 205
17.3 Lists as collections......Page 207
17.4 Lists and recursion......Page 208
17.5 Innite lists......Page 209
17.7 Modifying lists......Page 210
17.8 Wrappers and helpers......Page 211
17.9 The LinkedList class......Page 212
17.10 Invariants......Page 213
17.11 Glossary......Page 214
18.1 Abstract data types......Page 215
18.3 Implementing stacks with Python lists......Page 216
18.4 Pushing and popping......Page 217
18.6 Parsing......Page 218
18.7 Evaluating postx......Page 219
18.8 Clients and providers......Page 220
18.9 Glossary......Page 221
19.1 The Queue ADT......Page 223
19.2 Linked Queue......Page 224
19.4 Improved Linked Queue......Page 225
19.5 Priority queue......Page 227
19.6 The Golfer class......Page 229
19.7 Glossary......Page 230
Trees......Page 231
20.1 Building trees......Page 232
20.3 Expression trees......Page 233
20.4 Tree traversal......Page 234
20.5 Building an expression tree......Page 236
20.7 The animal tree......Page 240
20.8 Glossary......Page 243
A.1 Syntax errors......Page 245
A.2.2 My program hangs.......Page 247
A.2.3 When I run the program I get an exception.......Page 249
with output.......Page 250
A.3.1 My program doesn't work.......Page 251
what I expect.......Page 252
A.3.5 No, I really need help.......Page 253
Creating a new data type......Page 255
B.1 Fraction multiplication......Page 256
B.3 Euclid's algorithm......Page 258
B.4 Comparing fractions......Page 259
B.5 Taking it further......Page 260
B.6 Glossary......Page 261
Recommendations for further reading......Page 263
C.1 Python-related web sites and books......Page 264
books......Page 265
Preamble......Page 267
D.1 Applicability and Denitions......Page 268
D.3 Copying in Quantity......Page 269
D.4 Modications......Page 270
D.5 Combining Documents......Page 272
D.8 Translation......Page 273
Your Documents......Page 274
Index......Page 277