# Index

abecedarian... 7.3 abstract class... 19.7 abstract data type... see ADT access... 8.2 accumulator... 15.6, 15.9, 16.7
fraction... Appendix B
ADT... 18.1, 18.8, 18.9
Priority Queue... 19.5, 19
Queue... 19.1, 19
Stack... 18.2
algorithm... 1.6, 13.7, 13.8
aliasing... 8.11, 8.17, 10.3, 12.8
ambiguity... 1.4, 12.4
fundamental theorem... 17.6
animal game... 20.7
append method... 15.5
argument... 3.1, 3.9, 3.13
arithmetic sequence... 6.3
assignment... 2.2, 2.11, 6.1
multiple ... 6.10
tuple... 9.2, 9.9, 15.7
attribute... 12.2, 12.9
class... 15.3, 15.9
AttributeError... Appendix A
base case... 4.10, 4.13
binary operator... 20.3, 20.8
binary tree... 20.8, 20
block... 4.4, 4.13
body... 4.4, 4.13
loop... 6.2
boolean expression... 4.2, 4.13
boolean function... 5.4, 15.8
bracket operator... 7.1
branch... 4.5, 4.13
break statement... 11.6, 11
bug... 1.3, 1.6
call graph... 10.5
function... 3.1
Card... 15.2
cargo... 17.1, 17.11, 20
chained conditional... 4.6
character... 7.1
character classification... 7.10
child class... 16.1, 16.8
child node... 20.8, 20
circular buffer... 19.7
circular definition... 5.5
class... 12.9, 12
class attribute... 15.3, 15.9
Card... 15.2
Golfer... 19.6
LinkedList... 17.9
Node... 17.2
OldMaidGame... 16.7
OldMaidHand... 16.6
parent... 16.2, 16.4
Point... 14.7
Stack... 18.3
character... 7.10
client... 18.1, 18.9
clone... 8.17
cloning... 8.12, 10.3
coercion... 3.13
type... 3.3, 10.6
collection... 17.3, 18.2
column... 8.15
comment... 2.10, 2.11
comparable... 15.4
fraction... Appendix B
string... 7.5
compile... 1.1, 1.6
compile-time error... Appendix A
compiler... Appendix A
complete language... 5.5
complete ordering... 15.4
composition... 2.9, 2.11, 3.5, 5.3, 15.1, 15.5
compound data type... 7.1, 7.11, 12.1
compound statement... 4.4, 4.13
body... 4.4
header... 4.4
statement block... 4.4
compression... 10.7
computational pattern... 7.7
concatenation... 2.8, 2.11, 7.3, 7.6
list... 8.6
condition... 4.13, 6.2, Appendix A
conditional branching... 4.4
conditional execution... 4.4
conditional operator... 15.4
conditional statement... 4.13
chained... 4.6
constant time... 19.3, 19.7
constructor... 12.1, 12.9, 15.2
continue statement... 11.1, 11.6
type... 3.2
copy module... 12.8
copying... 10.3, 12.8
counter... 7.8, 7.11
counting... 9.6, 10.7
cursor... 6.10
generic... 18.3, 18.4
recursive... 17.1, 17.11, 20
compound... 7.1, 12.1
dictionary... 10
immutable... 9.1
long integer... 10.6
tuple... 9.1
user-defined... 12.1, Appendix B
dead code... 5.1, 5.9
dealing cards... 16.3
debugging... 1.3, 1.6, Appendix A
deck... 15.5
decrement... 7.11
deep copy... 12.9
deep equality... 12.4, 12.9
circular... 5.5
function... 3.6
recursive... 20.5
list... 8.9
delimiter... 8.17, 11.3, 18.6, 18.9
denominator... Appendix B
deterministic... 9.9
development plan... 6.10
incremental... 5.2, 13.8
planned... 13.8
dictionary... 8.15, 10.8, 11.2, 10, Appendix A
method... 10.2
operation... 10.1
directory... 11.3, 11.6
integer... 3.3
documentation... 17.10
dot notation... 3.4, 3.13, 10.2, 14.2, 14.6
dot product... 14.8, 14.10
Doyle, Arthur Conan... 1.3
element... 8.17, 8
embedded reference... 12.8, 17.1, 17.11, 20
encapsulate... 6.10
encapsulation... 6.5, 12.7, 18.1, 18.8
encode... 15.2, 15.9
encrypt... 15.2
equality... 12.4
error checking... 5.8
error handling... 20.6
error messages... Appendix A
compile-time... Appendix A
runtime... 1.3, 4.11, Appendix A
semantic... 1.3, Appendix A
syntax... 1.3, Appendix A
escape sequence... 6.3, 6.10
Euclid... Appendix B
eureka traversal... 7.7
except statement... 11.5, 11.6
exception... 1.3, 1.6, 11.5, 11.6, Appendix A
executable... 1.6
flow... Appendix A
expression... 2.6, 2.11, 18.5
expression tree... 20.3, 20.5
big and hairy... Appendix A
boolean... 4.2, 4.13
factorial function... 5.5, 5.8
Fibonacci function... 5.7, 10.5
FIFO... 19.7, 19
file... 11.6, 11
text... 11.1
float... 2.1
floating-point... 2.11, 12.1
flow of execution... 3.8, 3.13, Appendix A
for loop... 7.3, 8.5
formal language... 1.4, 1.6
format operator... 11.2, 11.6, 19.6, Appendix A
format string... 11.2, 11.6
frabjuous... 5.5
fraction... Appendix B
addition... Appendix B
comparison... Appendix B
multiplication... Appendix B
frame... 3.11, 3.13, 4.10, 10.5
function... 3.6, 3.13, 6.9, 14.1, 13
function call... 3.1, 3.13
function definition... 3.6, 3.13
function frame... 3.11, 3.13, 4.10, 10.5
modifier... 13.3
pure... 13.2
argument... 3.9
boolean... 5.4, 15.8
composition... 3.5, 5.3
factorial... 5.5
math... 3.4
parameter... 3.9
recursive... 4.9
tuple as return value... 9.3
functional programming style... 13.4, 13.8
fundamental ambiguity theorem... 17.11
animal... 20.7
gamma function... 5.8
generalization... 6.5, 12.7, 13.6
generalize... 6.10
generic data structure... 18.3, 18.4
geometric sequence... 6.3
Golfer... 19.6
greatest common divisor... Appendix B
guardian... 5.9
handle exception... 11.5, 11.6
handling errors... 20.6
hanging... Appendix A
hello world... 1.5
helper method... 17.8, 17.11
high-level language... 1.1, 1.6
hint... 10.5, 10.8
histogram... 9.8, 9.9, 10.7
Holmes, Sherlock... 1.3
identity... 12.4
immutable... 9.1
immutable string... 7.6
immutable type... 9.9
Queue... 19.1
improved queue... 19.4
in operator... 8.4, 15.8
increment... 7.11
incremental development... 5.2, 5.9, 13.8
incremental program development... Appendix A
index... 7.1, 7.11, 8.17, 10, Appendix A
negative... 7.2
IndexError... Appendix A
infinite list... 17.5
infinite loop... 6.2, 6.10, Appendix A
infinite recursion... 4.11, 4.13, 5.8, Appendix A
infix... 18.5, 18.9, 20.3
inheritance... 16.1, 16.8
initialization method... 14.6, 14.10, 15.5
inorder... 20.4, 20.8
instance... 12.3, 12.6, 12.9
object... 12.1, 14.1, 15.3
instantiate... 12.9
instantiation... 12.1
int... 2.1
integer division... 2.6, 2.11, 3.3
long... 10.6
Intel... 6.3
interface... 18.2, 19.7
interpret... 1.1, 1.6
invariant... 17.10, 17.11
invoke... 10.8
invoking method... 10.2
irrational... Appendix B
iteration... 6.2, 6.10, 6
join function... 8.16
key... 10.8, 10
key-value pair... 10.8, 10
KeyError... Appendix A
keyword... 2.3, 2.11
knowledge base... 20.7
language... 12.4
complete... 5.5
formal... 1.4
high-level... 1.1
low-level... 1.1
natural... 1.4
programming... 1.1
safe... 1.3
leaf node... 20.8, 20
leap of faith... 5.6, 17.4
length... 8.3
level... 20.8, 20
linear time... 19.3, 19.7
link... 17.11
linked list... 17.1, 17.11
linked queue... 19.2, 19.7
LinkedList... 17.9
Linux... 1.3
list... 8.17, 17, 8
list deletion... 8.9
list method... 10.7, 15.5
list operation... 8.6
list traversal... 8.17
as parameter... 8.13, 17.3
cloning... 8.12
element... 8.2
for loop... 8.5
infinite... 17.5
length... 8.3
linked... 17.1, 17.11
loop... 17.5
membership... 8.4
modifying... 17.7
mutable... 8.8
nested... 8.1, 8.14, 8.15, 10.4
of objects... 15.5
printing... 17.3
printing backwards... 17.4
slice... 8.7
traversal... 8.2, 17.3
traverse recursively... 17.4
well-formed... 17.10
literalness... 1.4
local variable... 3.10, 3.13, 6.7
logarithm... 6.3
logical operator... 4.2, 4.3
long integer... 10.6
loop... 6.2, 6.10
loop variable... 6.10, 16.3, 17.3
body... 6.2, 6.10
condition... Appendix A
for loop... 7.3
in list... 17.5
infinite... 6.2, Appendix A
nested... 15.5
traversal... 7.3
while... 6.2
low-level language... 1.1, 1.6
lowercase... 7.10
Make Way for Ducklings... 7.3
map to... 15.2
math function... 3.4
mathematical operator... Appendix B
matrix... 8.15
sparse... 10.4
McCloskey, Robert... 7.3
mental model... Appendix A
method... 10.2, 10.8, 14.1, 14.10, 13
dictionary... 10.2
helper... 17.8
initialization... 14.6, 15.5
invocation... 10.2
list... 10.7, 15.5
wrapper... 17.8
mental... Appendix A
modifier... 13.3, 13.8
modifying lists... 17.7
module... 3.4, 3.13, 7.9
copy... 12.8
string... 7.10
modulus operator... 4.1, 4.13, 16.3
multiple assignment... 6.1, 6.10
fraction... Appendix B
mutable... 7.6, 7.11, 9.1
mutable type... 9.9
list... 8.8
object... 12.7
NameError... Appendix A
natural language... 1.4, 1.6, 12.4
negation... Appendix B
nested list... 8.14, 8.17, 10.4
nested structure... 15.1
nesting... 4.13
newline... 6.10
node... 17.1, 17.11, 20.8, 20
Node class... 17.2
None... 5.1, 5.9
random... 9.4
numerator... Appendix B
object... 8.10, 8.17, 12.9, 12
object code... 1.6
object instance... 12.1, 14.1, 15.3
object invariant... 17.10
list of... 15.5
mutable... 12.7
object-oriented design... 16.1
object-oriented programming... 14.1, 16.1
object-oriented programming language... 14.1, 14.10
operand... 2.6, 2.11
dictionary... 10.1
list... 8.6
operator... 2.6, 2.11
operator overloading... 14.8, 14.10, 15.4, 19.6
binary... 20.3, 20.8
bracket... 7.1
conditional... 15.4
format... 11.2, 11.6, 19.6, Appendix A
in... 8.4, 15.8
logical... 4.2, 4.3
modulus... 4.1, 16.3
overloading... 14.8, Appendix B
order of evaluation... Appendix A
order of operations... 2.7
ordering... 15.4
overflow... 10.5
overload... Appendix B
overloading... 14.10
operator... 19.6
override... 14.10, 15.4
parameter... 3.9, 3.13, 8.13, 12.3
list... 8.13
parent class... 16.1, 16.2, 16.4, 16.8
parent node... 20.8, 20
parse... 1.4, 1.6, 18.6, 18.9, 20.5
partial ordering... 15.4
pass statement... 4.4
path... 11.3
pattern... 7.7, 7.8
pattern matching... 9.9
Pentium... 6.3
performance... 19.3
performance hazard... 19.7
pickle... 11.6
pickling... 11.4
planned development... 13.8
poetry... 1.4
Point class... 14.7
polymorphic... 14.10
polymorphism... 14.9
pop... 18.4
portability... 1.6
portable... 1.1
postfix... 18.5, 18.9, 20.3
postorder... 20.4, 20.8
precedence... 2.11, Appendix A
precondition... 17.5, 17.11
prefix... 20.4, 20.8
preorder... 20.4, 20.8
print statement... 1.5, 1.6, Appendix A
deck object... 15.6
hand of cards... 16.4
object... 12.2, 14.2
priority... 19.6
priority queue... 19.7, 19
ADT... 19.5
priority queueing... 19
problem-solving... 1.6
product... 20.5
program... 1.6
encapsulation... 6.5
generalization... 6.5
development... 6.10
programming language... 1.1
prompt... 4.12, 4.13
prose... 1.4
prototype development... 13.5
provider... 18.1, 18.9
pseudocode... Appendix B
pseudorandom... 9.9
pure function... 13.2, 13.8
push... 18.4
Python Library Reference... 7.10
queue... 19.7, 19
Queue ADT... 19.1
improved implementation... 19.4
linked implementation... 19.2
List implementation... 19.1
queueing policy... 19.7, 19
raise exception... 11.5, 11.6
random... 15.7
random number... 9.4
randrange... 15.7
rank... 15.2
rational... Appendix B
rectangle... 12.5
recursion... 4.9, 4.13, 5.5, 5.6, 20.2, 20.4
base case... 4.10
infinite... 4.11, 5.8, Appendix A
recursive data structure... 17.1, 17.11, 20
recursive definition... 20.5
reduce... Appendix B
redundancy... 1.4
reference... 17.1
aliasing... 8.11
embedded... 12.8, 17.1, 17.11
regular expression... 18.6
removing cards... 15.8
list... 8.6
return statement... 4.8, Appendix A
return value... 3.1, 3.13, 5.1, 5.9, 12.6
tuple... 9.3
variable... 17.6
root node... 20.8, 20
row... 8.15
rules of precedence... 2.7, 2.11
runtime error... 1.3, 1.6, 4.11, 7.2, 7.6, 8.2, 9.1, 10.2, 10.4, 10.5, 11.2, 11, Appendix A
safe language... 1.3
sameness... 12.4
scaffolding... 5.2, 5.9
scalar multiplication... 14.8, 14.10
script... 1.6
semantic error... 1.3, 1.6, 9.3, Appendix A
semantics... 1.3, 1.6
sequence... 8.17, 8
shallow copy... 12.9
shallow equality... 12.4, 12.9
shuffle... 15.7
sibling node... 20.8
singleton... 17.7, 17.8, 17.11
slice... 7.4, 7.11, 8.7
source code... 1.6
split function... 8.16
stack... 18.2
Stack... 18.3
stack diagram... 3.11, 3.13, 4.10
state diagram... 2.2, 2.11
statement... 2.11
assignment... 2.2, 6.1
block... 4.4
break... 11.6, 11
compound... 4.4
conditional... 4.13
continue... 11.1, 11.6
except... 11.5
pass... 4.4
print... 1.5, 1.6, Appendix A
return... 4.8, Appendix A
try... 11.5
while... 6.2
straight flush... 16.4
string... 2.1
string comparison... 7.5
string module... 7.9, 7.10
string operation... 2.8
immutable... 7.6
length... 7.2
slice... 7.4
subclass... 16.1, 16.4, 16.8
subexpression... 20.5
suit... 15.2
sum... 20.5
swap... 15.7
syntax... 1.3, 1.6, Appendix A
syntax error... 1.3, 1.6, Appendix A
tab... 6.10
table... 6.3
two-dimensional... 6.4
temporary variable... 5.1, 5.9, Appendix A
text file... 11.1, 11.6
fundamental ambiguity... 17.6
token... 1.6, 18.6, 18.9, 20.5
traceback... 3.11, 3.13, 4.11, 11.5, Appendix A
traversal... 7.3, 7.7, 8.5, 16.6
list... 8.2
traverse... 7.11, 17.3, 17.4, 19.5, 20.2, 20.4
tree... 20
tree node... 20
empty... 20
expression... 20.3, 20.5
traversal... 20.2, 20.4
try... 11.6
try statement... 11.5
tuple... 9.1, 9.3, 9.9, 9
tuple assignment... 9.2, 9.9, 15.7
Turing Thesis... 5.5
Turing, Alan... 5.5
type... 2.1, 2.11
type checking... 5.8
type coercion... 3.3, 10.6
type conversion... 3.2
float... 2.1
int... 2.1
string... 2.1
TypeError... Appendix A
unary negation... Appendix B
unary operator... Appendix B
underscore character... 2.3
uppercase... 7.10
user-defined data type... 12.1
value... 2.1, 2.11, 8.10
tuple... 9.3
variable... 2.2, 2.11
local... 3.10, 6.7
loop... 16.3
roles... 17.6
temporary... 5.1, 5.9, Appendix A
veneer... 18.3, 19.7
while statement... 6.2
whitespace... 7.10, 7.11
wrapper... 17.11
wrapper method... 17.8