## Lesson Summary

Summary

This lesson answers the question "What is a list and what can I do with one?". Students will find the answer to this question by exploring list operations and methods, as well as investigating how lists are modeled in real-world situations.

Outcomes

• Students will create lists, access, and traverse elements within the list.
• Students will perform list operations including insertion, concatenation, repetition, slices, and deletion.
• Students will be introduced to list methods including append, insert, pop, sort, reverse, index, count, and remove.
• Students will explore the Python API.
• Students will use lists to model several real-world situations.

Overview

Session 1

1. Getting Started (5 min)
1. Introduction [3 min]
2. Discussion [2 min]
2. Guided Actvities (40 min)
1. Listy Linkys RolePlay [20 min]
2. Python Documentation [10 min]
3. List Slices [10 min]
3. Wrap-up (5 min)
1. Homework

Session 2

1. Warm-up (5 min)
2. Guided Activities (40 min)
1. Lists are Mutable [20 min]
2. Paired Programming [20 min]
3. Wrap-up (5 min)
1. Homework

## Math Common Core Practice:

• MP1: Make sense of problems and persevere in solving them.
• MP2: Reason abstractly and quantitatively.
• MP4: Model with mathematics.
• MP7: Look for and make use of structure.

## Common Core Math:

• F-IF.1-3: Understand the concept of a function and use function notation
• F-IF.4-6: Interpret functions that arise in applications in terms of the context

## Common Core ELA:

• WHST 12.5 - Develop and strengthen writing as needed by planning, revising, editing, rewriting
• WHST 12.6 - Use technology, including the Internet, to produce, publish, and update writing products

## NGSS Practices:

• 2. Developing and using models

## Essential Questions

• How can computing and the use of computational tools foster creative expression?
• How are vastly different kinds of data, physical phenomena, and mathematical concepts represented on a computer?
• How does abstraction help us in writing programs, creating computational artifacts and solving problems?
• How are programs developed to help people, organizations or society solve problems?
• How do computer programs implement algorithms?
• How does abstraction make the development of computer programs possible?
• How do people develop and test computer programs?

## Teacher Resources

Student computer usage for this lesson is: required

In the Lesson Resources folder:

• "Warm-Up Get Ready for Lists"

Other:

# Getting Started (5 min)

## Introduction [3 min]

Review the string commands. As they enter the class, hand students a copy of the Warm-Up Get Ready for Lists.docx that is found in the Lesson Resources folder.

## Discussion [2 min]

Discuss: What is a list? (A sequential collection of Python data values; each value is identified by an index.)

# Guided Actvities (40 min)

## List Role Play [20 min]

See the file calld LinkyListy Role Play in the Lesson Resources folder. Note: You can change student names to students within your class.

• Create a List of students by starting with an empty list and then appending students. Have each student come up to stand in front of the room where memory resides. Give each student her/his index on a notecard as s/he is appended to the list. Ask students which index number they think that they should get.  What does this numbering system remind you of? It is just like strings! For cxample: `students = []; students.append("Mary"); students.append( “Jack”); students.append("Jill")`.  Note: If we enclose the elements of the list in square brackets when appending multiple items, they are added as a sublist, not as individual elements.
• Length of a `list: print(len(students))`
• Accessing Elements: `print(students[2])`
• List Membership (in, not in): `print(“Mary” in students)`
• Concatenation and repetition (+ *):Make a list of more Python commands on sentence strips. On back of the sentence strip, write the output or trace of the statement after it has executed onto the back of the card. Have one student hold the deck of cards and cycle through them. Ask students to read a card and predict the output. Meanwhile, students who are in the list will change positions to demonstrate the behavior within the list. The holder of the card provides feedback or congratulatoins in checking the correctness of classmate's responses.
• Include cards that model these behaviors:
`more = ["Tom", "Laverne"]students = students + morepets =['fish'*3,'dog']*2          # creates a list of ['fishfishfish','dog','fishfishfish','dog']`
• List deletion using the delete operator: `del students[2], del students[2:4]`
• List deletion using the List method pop: `stu = students.pop(2)`, `stuLast = students.pop()`. The pop method pops (deletes and returns) an element at a given index or the last element if no index is provided.
• Extension: additional list methods that may be useful and interesting: sort, reverse, index, count.

Check for understanding: Ask students to give an example and then explain the effect of several of the List methods. For example, `students.append(“Zoe”)` would add Zoe to the end of the list of students. `students.insert(4, “Larry”)` would add Larry at index position 4 and slide everyone else down one slot. This could be done as a placemat activity. Use different colored markers for each student to write the example. Turn placement and ask the next student to explain the effect.

## Python Documentation [10 min]

• Check out the Python docs for Built-in Types.
• Go to Section 4.6 Sequence types- list, tuple, range, and check out the sections on (4.6.1) Common Sequence Operations, (4.6.3) Mutable Sequence Types, and (4.6.4) Lists.
• Students need to realize that Application Programmer Interfaces (APIs) are an important resource for programming.
• Ask several questions regarding the info found in the API. (Link to resource:  Python API for Built-in Types)

## List Slices [10 min]

• Quickly resurrect your list of students.
• This time, write names on the board.
• To simulate list slices, add each student’s age and hair color after each student’s name.
• Yes, lists can contain different kinds of objects!
• Ask students to copy the list and write the code to pull out a sublist that contains the second student’s name and info.

# Wrap-Up (5 min)

Discussion: How are lists the same and how are they different from Strings?

## Homework

Have the students do the Runestone lab activities for Lists to reinforce the above concepts. (http://interactivepython.org/runestone/static/CCPS_Python/Lists/lists.html)

# Warm-up (5 min)

• Create a list that contains the integers from 1 to 10.
• Create the same list from an empty list using a loop.
• Check for understanding: create a list that counts down from 10 to 1 and then adds “Blastoff”.
• Reverse a given list.

# Guided Activities (40 min)

## Lists are Mutable [20 min]

Demonstrate that lists are mutable with the following activity

• Create a list representing a horse barn containing 4 horses in 6 stalls.
• Use the built-in constant `None` for the empty stalls.
• Find an empty stall.
• If there is an empty stall, place “Toby” in the Barn in that slot.
• Also. see if a particular horse is in the barn or if he is out to pasture.
• Exchange 2 horses in the barn. (Adapted from 2012 APCS exam question 3, page 13 of  http://apcentral.collegeboard.com/apc/public/repository/ap_frq_computerscience_12.pdf)

## Paired Programming [20 min]

• In a group of 2-3, make a zoo of animals.
• Demonstrate the use of at least 6 different list operations and methods.
• For a bonus, try to make a story with your code.

# Wrap Up (5 min)

## Homework

Create a list of 5 students that contain the students' name, age, and hair color. Use a loop to extract the information for each student and print it out.

Teacher Note: Consider using the YumYumCupcake problem (see Formative Assessment) as part of tomorrow's opening exercises.

## Options for Differentiated Instruction

• Use a canvas shoe bag to demonstrate a list.
• Use a parking lot with numbered spaces as an example of a list.

## Formative Assessment

• Create a quiz similiar to the role play. Use the answer chart provided as a template for the quiz.
• Check for understanding: Ask students to explain what the effect of the List methods append, insert, etc. For example, students.append “Zoe” would add Zoe to the end of the list of students? Students.insert( 4, “Larry”). Would add Larry at index position 4 and slide everyone else down one slot?
• Check for understanding: Create a list that counts down from 10 to 1 and then adds “Blastoff”.
• Let's visit the YumYum Shoppe: Create a list that has different kinds of cupcakes and simulate the actions that might take place during a typical day. For example, `yumYumCupcakes = ["chocolate mousse" *3, "vanilla creme", "strawberry fluff", "chocolate mousse"*2].` Have a customer purchase a vanilla creme cupcake if there are any, check how many chocolate mouse cupcakes are in the display case, bake some more, and add them in. Drop one cupcake on the floor and throw it away.

## Summative Assessment

Paired programming: Make a zoo of animals and demonstrate the use of at least 6 different list operations and methods. Try to make a story with your code.