11 Programming with State (in Both Pyret and Python)
11.1 State, Change, and Testing
11.1.1 Example: Bank Accounts
11.1.2 Testing Functions that Mutate Data
11.1.3 Aliasing
11.1.4 Data Mutation and the Directory
11.1.4.1 Introducing the Heap
11.1.4.2 Basic Data and the Heap
11.2 Understanding Equality
11.2.1 Equality of Data
11.2.2 Different Equality Operations
11.2.2.1 Equality in Python
11.2.2.2 Equality in Pyret
11.3 Arrays and Lists in Memory
11.4 Cyclic Data
11.4.1 Creating Cyclic Data
11.4.2 Testing Cyclic Data
11.4.3 Cycles in Practice
12 More Programming with State: Python
12.1 Modifying Variables
12.1.1 Modifying Variables in Memory
12.1.2 Variable Updates and Aliasing
12.1.3 Updating Variables versus Updating Data Fields
12.1.4 Updating Parameters in Function Calls
12.1.5 Updating Top-Level Variables within Function Calls
12.1.6 The Many Roles of Variables
12.2 Mutable Lists