Appendix F: Index
Entries reference chapter numbers (e.g., 7) and sections (e.g., 7.3). Bold entries indicate the primary definition. Page references are omitted as this is a digital textbook; use your reader's search function for precise location within a chapter.
A
ABC (abstract base class), 15.4, 16.1
abstract data type (ADT), 20.1, 20.2, 20.3
abstract method, 15.4, 16.1
abstraction, 1.2, 6.1, 12.1, 14.5, 20.1
accumulator pattern, 5.4, 5.6, 8.5, 9.3
Agile methodology, 26.3, 26.4, 26.5
algorithm, 1.2, 17.1-17.5, 19.1-19.6
algorithm analysis, 17.2, 19.1-19.6
aliasing, 8.7, 8.8, 14.2
and operator, 4.3, 4.4, C.2
API (Application Programming Interface), 21.3, 21.4, 24.1
append(), list method, 8.2, 8.3, 8.7
append() vs. extend(), 8.2
argument, 6.2, 6.3
*args, 6.3, 6.6
assert statement, 13.5, 13.1
assignment operator (=), 3.1, 3.5
augmented assignment (+=, -=, etc.), 3.5, 5.4
automation, 24.3, 24.4, 24.5
B
backlog (Agile), 26.3
base case (recursion), 18.1, 18.2, 18.4
Beautiful Soup (bs4), 24.2, 24.3
Big-O notation, 17.2, 17.3, 19.1-19.6, C.3
binary number system, C.1, 3.3
binary search, 19.2, 17.2, 18.3
bool type, 3.3, 4.2
Boolean algebra, C.2, 4.3
Boolean operators (and, or, not), 4.3, C.2
boundary condition, 13.2, 19.2
break statement, 5.6, 5.5
brute force algorithm, 17.4, 19.1
bug, 1.3, 2.5, 13.3
C
Caesar cipher, 7 (exercises), 6 (exercises)
call stack, 6.5, 18.1, 18.4
chr(), 7.5, A.11
CI/CD, 26.5
class, 14.1, 14.2-14.5
class attribute, 14.4, 14.2
clone (Git), 25.5
code coverage, 13.4
code review, 26.4, 25.5
code smell, 16.3, 16.5
cohesion, 16.2, 16.1
collections module, 12.4, 9.6
Counter, 9.6, 12.4
defaultdict, 9.6, 9.3
deque, 20.3, 20.4
namedtuple, 12.4
comma-separated values, see CSV
comment, 2.5, 6.7
commit (Git), 25.2, 25.3
comparison operators (==, !=, <, >, <=, >=), 3.4, 4.1
compiler vs. interpreter, 2.2
composition (OOP), 15.5, 16.2
computational thinking, 1.2, 1.3, 4.1, 6.1, 17.1, 27.1
conditional, see if statement
constructor (__init__), 14.2, 14.3
context manager (with statement), 10.1, 10.2
continue statement, 5.6
copy(), list method, 8.7
copy module, 8.7
deepcopy(), 8.7, 8.8
coupling, 16.2, 16.1
cron (task scheduling), 24.4
Crypts of Pythonia (running example), 1.5, 4.7, 8.6, 9.5, 14.1, 15.2, 18.3, 20.2
CSS selector, 24.2
CSV (comma-separated values), 10.5, 21.1, 21.2
csv module, 10.5, 21.1
DictReader, 10.5, 21.1
DictWriter, 10.5, 21.2
D
data type, 3.3, 3.4, 3.5
dataclass, 16.4, 16.5
datetime module, 12.4, 21.1
debugging, 13.3, 2.5, 5.5, 11.1
binary search strategy, 13.3
print debugging, 13.3
rubber duck, 13.3
using a debugger, 13.3
decorator, 16.4, 14.5
@abstractmethod, 15.4
@dataclass, 16.4
@property, 14.5
@staticmethod, 14.4
decomposition, 1.2, 6.1, 12.1
deep copy, 8.7, 8.8
default parameter, 6.3, 6.4
def statement, 6.1, 6.2
De Morgan's laws, C.2, 4.3
dependency (package), 23.3, 23.2
deque, see collections
design pattern, 16.3, 16.4
Factory, 16.3
Observer, 16.3, 16.4
Strategy, 16.3, 16.4
dictionary, 9.1, 9.2-9.6
comprehension, 9.4, 9.5
get(), 9.2, 9.3
items(), 9.3, 9.4
keys(), 9.3
pop(), 9.2
setdefault(), 9.2
update(), 9.2
values(), 9.3
dictionary comprehension, 9.4
dir(), 12.2, A.11
divide and conquer, 17.4, 18.1, 19.5
DNA pipeline (Dr. Patel, running example), 1.5, 7.3, 9.3, 10.3, 12.4, 22.3, 24.4
docstring, 6.7, 12.2, 14.3
Dr. Patel, Anika, see DNA pipeline
dunder method, see special method
E
EAFP (Easier to Ask Forgiveness than Permission), 11.4, 11.5
edge case, 13.2, 11.1
Elena Vasquez, see nonprofit report
elif, 4.2, 4.4
else (on loops), 5.6
encapsulation, 14.5, 16.2
encoding (file), 10.2, 10.7
enumerate(), 5.3, 8.3
environment setup, B.1-B.8
error handling, see exception handling
escape character, 7.4, 22.2
exception, 11.1, 11.2-11.5
AttributeError, 11.1, 14.3
FileNotFoundError, 10.7, 11.1
ImportError, 11.1, 12.1
IndexError, 8.2, 11.1
KeyError, 9.2, 11.1
NameError, 3.7, 11.1
RecursionError, 18.4
StopIteration, 5.2
SyntaxError, 2.5, 11.1
TypeError, 3.5, 11.1
ValueError, 3.5, 11.1
ZeroDivisionError, 3.4, 11.1
exception handling (try/except), 11.2, 11.3, 11.4
expression, 3.4, 3.5
extend(), list method, 8.2
F
f-string, 3.6, 7.5, A.12
Factory pattern, 16.3
False, 3.3, 4.2
Fibonacci sequence, 18.2, 18.5
FIFO (First In, First Out), 20.3
file I/O, 10.1-10.7
append mode, 10.2
open(), 10.1
read mode, 10.1
read(), 10.1
readline(), 10.1
readlines(), 10.1
write mode, 10.2
write(), 10.2
writelines(), 10.2
filter(), 17.5, A.11
finally clause, 11.2, 11.3
float type, 3.3, 3.5
floating-point precision, 3.4, 3.7
for loop, 5.2, 5.3, 5.6
fork (GitHub), 25.5
frequency counting, 9.3, 9.6
frozenset, 9.5
function, 6.1-6.7
composition, 6.6
definition (def), 6.1
docstring, 6.7
as first-class object, 16.3, 19.5
G
get(), dictionary method, 9.2, 9.3
Git, 25.1-25.5
git add, 25.2
git branch, 25.3
git checkout, 25.3
git clone, 25.5
git commit, 25.2
git diff, 25.2
git init, 25.1
git log, 25.2
git merge, 25.4
git pull, 25.5
git push, 25.5
git status, 25.2
.gitignore, 25.2
GitHub, 25.5, 26.4
global variable, 6.5, 6.6
glossary, Appendix E
Grade Calculator (running example), 1.5, 3.1, 4.2, 5.4, 6.2, 8.3, 10.5, 14.1, 19.5
graph (data structure), 20.6
greedy algorithm, 17.4
H
hardware, 1.1
has-a relationship, 15.5, 16.2
hash, 9.1, 9.5, 20.6
hash table, 20.6, 9.1
help(), 12.2, A.11
HTML, 24.1, 24.2
HTTP, 21.3, 21.4
I
IDE (Integrated Development Environment), 2.3, B.2
id(), 3.7, 8.7
if statement, 4.1, 4.2, 4.4
elif, 4.2
else, 4.1
nested, 4.4
immutable, 7.2, 8.6, 9.1
import statement, 12.1, 12.2
from...import, 12.1
import...as, 12.1
indentation, 2.4, 4.1, 5.2
index (list/string), 7.1, 8.1
IndexError, see exception
infinite loop, 5.5, D.5
inheritance, 15.1, 15.2-15.6
multiple, 15.6
__init__ method, 14.2, 14.3
input(), 2.4, 3.5
input validation, 4.5, 5.5, 11.2
insertion sort, 19.4, 19.6
insert(), list method, 8.2
instance, 14.1, 14.2
instance attribute, 14.2, 14.4
int type, 3.3, 3.5
isinstance(), 15.3, A.11
is-a relationship, 15.1, 15.5
iterable, 5.2, 5.3
iteration, 5.1-5.6
J
join(), string method, 7.3, 7.5
JSON (JavaScript Object Notation), 10.6, 21.1, 21.2
json module, 10.6, 21.1
dump(), 10.6
dumps(), 10.6
load(), 10.6
loads(), 10.6
K
key (dictionary), 9.1, 9.2
key function (for sorting), 19.5, 8.4
KeyError, see exception
keyword argument, 6.3, 6.4
L
lambda, 19.5, 8.4
LBYL (Look Before You Leap), 11.4
len(), 3.6, 7.1, 8.1, 9.1
LIFO (Last In, First Out), 20.2
linear search, 19.1, 17.2
linked list, 20.5, 20.6
list, 8.1-8.8
comprehension, 8.5, 8.6
methods, see append(), extend(), insert(), pop(), remove(), sort(), copy()
nested, 8.8, 19.5
slicing, 8.1, 7.1
local variable, 6.5, 6.6
logic error, 3.7, 13.3, D.4
loop, 5.1-5.6
else clause, 5.6
for, 5.2
infinite, 5.5
nested, 5.7, 17.2
while, 5.4
loop variable, 5.2, 5.3
M
map(), 17.5, A.11
match/case statement, 4.7, 4.8
math module, 3.4, 12.4
memoization, 18.5
merge (Git), 25.4
merge conflict, 25.4
merge sort, 19.5, 17.4, 18.1
method, 7.3, 14.2
method overriding, 15.2, 15.3
method resolution order (MRO), 15.6
mock (testing), 13.4
modular arithmetic (%), 3.4, 5.4, C.4
module, 12.1-12.5
__name__, 12.3
__main__, 12.3
multiple inheritance, 15.6
mutable, 8.1, 8.7, 9.1
MVP (Minimum Viable Product), 26.3
N
__name__ variable, 12.3
NameError, see exception
namespace, 12.2, 6.5
nested conditional, 4.4
nested list, 8.8, 19.5
None, 6.4, 6.5, 9.2
nonprofit report (Elena Vasquez, running example), 1.5, 5.4, 10.5, 12.4, 13.3, 21.2, 24.4
not operator, 4.3, C.2
O
O(1), O(log n), O(n), O(n log n), O(n²), O(2ⁿ), see Big-O notation
object, 14.1, 14.2-14.5
object-oriented programming (OOP), 14.1-16.5
Observer pattern, 16.3, 16.4
off-by-one error, 5.5, 8.1
open(), 10.1, 10.2
Open/Closed Principle, 16.1
operator, 3.4, 4.3
arithmetic, 3.4
Boolean, 4.3
comparison, 3.4
membership (in, not in), 5.2, 9.1
precedence, 3.4, 4.3, C.2
or operator, 4.3, C.2
ord(), 7.5, A.11
P
package, 12.3, 23.2
pagination (API), 21.4
parameter, 6.2, 6.3
default, 6.3
keyword, 6.3
*args, 6.3
parent class (superclass), 15.1, 15.2
pass statement, 4.1, 14.1
pathlib module, 10.4, 24.4
Path, 10.4
glob(), 10.4
mkdir(), 10.4
pattern recognition, 1.2
pip, 12.5, 23.2
polymorphism, 15.3, 15.4, 16.3
pop(), list method, 8.2, 20.2
print(), 2.4, 2.5, 6.4
end parameter, 2.5
sep parameter, 2.5
program, 1.1
@property, 14.5, 16.4
pseudocode, 17.3, 1.2
pull request, 25.5, 26.4
push (Git), 25.5
push (stack), 20.2
PyPI (Python Package Index), 23.2
pytest, 13.1, 13.2, 13.4
Q
queue, 20.3, 20.4
deque implementation, 20.3
R
raise statement, 11.3, 11.5
random module, 4.6, 12.4
range(), 5.2, 5.3
rate limiting (API), 21.4, 24.3
re module (regular expressions), 22.1-22.5
findall(), 22.3
match(), 22.2
search(), 22.2
sub(), 22.4
read mode (file), 10.1
recursion, 18.1-18.5
base case, 18.1
recursive case, 18.1
tail recursion, 18.5
tree recursion, 18.3
vs. iteration, 18.4
refactoring, 16.3, 16.5
regression test, 13.2
regular expression, 22.1-22.5
character class, 22.2
capture group, 22.3
greedy vs. lazy, 22.4
quantifier, 22.2
remove(), list method, 8.2
REPL, 2.3, B.3
replace(), string method, 7.3
repository (Git), 25.1
requests library, 21.3, 23.2
requirements.txt, 23.3, B.5
REST API, 21.3, 21.4
return statement, 6.2, 6.4
multiple values, 6.4, 8.6
reverse(), list method, 8.4
reversed(), A.11
robots.txt, 24.3
runtime error, 3.7, 11.1
S
scope, 6.5, 12.2
LEGB rule, 6.5
Scrum, 26.3
SDLC (Software Development Lifecycle), 26.1-26.5
self, 14.2, 14.3
selection sort, 19.3, 19.6
Selenium, 24.5
semantic versioning, 23.3
sentinel value, 5.5, 5.6
set, 9.5, 9.6
add(), 9.5
difference() / -, 9.5
discard(), 9.5
intersection() / &, 9.5
remove(), 9.5
symmetric_difference() / ^, 9.5
union() / |, 9.5
shallow copy, 8.7
shell, 2.3, B.3
short-circuit evaluation, 4.3, C.2
Single Responsibility Principle, 16.1, 6.1
slice, 7.2, 8.1
SOLID principles, 16.1
sort(), list method, 8.4, 19.5
sorted(), 8.4, 19.5, 19.6
space complexity, 17.2
special method (dunder), 14.3
__eq__, 14.3
__init__, 14.2
__repr__, 14.3
__str__, 14.3
split(), string method, 7.3, 7.5
sprint (Scrum), 26.3
stack (data structure), 20.2, 20.4
stack frame, 6.5, 18.1
stack overflow, 18.4
staging area (Git), 25.2
standard library, 12.4, 12.5
statement, 3.1
status code (HTTP), 21.3
str type, 3.3, 7.1-7.5
Strategy pattern, 16.3
string, 7.1-7.5
formatting, see f-string
immutability, 7.2
indexing, 7.1
methods, see split(), join(), strip(), replace(), find(), upper(), lower()
slicing, 7.2
strip(), string method, 7.3
super(), 15.2, 15.3
SyntaxError, see exception
syntax error, 2.5, D.2
T
TaskFlow CLI (progressive project), 1.5, 2-27
TDD (Test-Driven Development), 13.3, 13.4
technical debt, 26.5
terminal, 2.3, B.3
test case, 13.1, 13.2
test suite, 13.1, 13.4
testing, 13.1-13.5
time complexity, 17.2, 19.1-19.6
Timsort, 19.6
traceback, 11.1, 11.2, 13.3
tracing (hand execution), 17.3, 18.1
tree (data structure), 20.6, 18.3
True, 3.3, 4.2
truth table, 4.3, C.2
truthiness, 4.2, 3.3
try/except, 11.2, 11.3
tuple, 8.6, 8.7
unpacking, 8.6, 6.4
type(), 3.3, A.11
type casting, 3.5
TypeError, see exception
U
undo/redo (stack application), 20.2, 20.4
unit test, 13.1, 13.2
unittest module, 13.1, 13.2
unpacking, 8.6, 6.4, 9.3
upper(), string method, 7.3
user story, 26.3
V
ValueError, see exception
variable, 3.1, 3.2
as name tag (not box), 3.2, 8.7
venv, see virtual environment
version control, 25.1-25.5
virtual environment, 23.1, B.5
VS Code, 2.3, B.2
W
Waterfall methodology, 26.2
web scraping, 24.1-24.4
while loop, 5.4, 5.5
with statement, 10.1, 10.2
write mode (file), 10.2
Z
ZeroDivisionError, see exception
zip(), 5.3, 8.3, 9.4
This index covers all 27 chapters and 9 appendices. For term definitions, see the Glossary (Appendix E). For syntax lookup, see the Python Quick Reference (Appendix A).