Throughout the text, diagrams play a major role, from droid diagrams for procedures, to box-and-arrow diagrams for list structure, to snapshots for environments. For many problems in these areas, diagrams play a pivotal role in explaining and understanding the underlying mechanisms. This labs aims to give the students the tools to write list processing procedures. It presents box-and-arrow diagrams and asks the student to derive the results of a series of list and pair operations using various primitives. They then must draw the corresponding box-and-arrow diagrams. The remainder of the lab describes three list processing procedures. The first asks for both left and right rotation of lists. Its solution is relatively straightforward. The second procedure must perform list access operations, car and cdr, on a list, depending upon a series of commands in a list. The list, for example (a 2 d 3) specifies a number of cAr or cDr operations to be performed in sequence. The procedure must perform list operations on both the command list and the input list. Multiple car operations is unusual, but multiple cdr operations is frequently seen. The final procedure creates a new list in which a particular element is repeated a specified number of times, wherever it occurs in the list. The goal of writing these procedures is to give the students facility in performing a variety of list operations, both in accessing and constructing lists. Once students have done this lab, you should ask them to draw diagrams as often as possible. In the third Checkpoint question, (navigate '((1 2) (1 2 (3))) '(d 1 a 1 d1)) should be (navigate '((1 2) (1 2 (3))) '(d 1 a 1 d 1)).