IV Programming With State

    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

 Introducing the Heap

 Basic Data and the Heap

      11.2 Understanding Equality

        11.2.1 Equality of Data

        11.2.2 Different Equality Operations

 Equality in Python

 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