As students learned in Unit 6, data structures are helpful when storing multiple related data values. Arrays have a static size, which causes limitations related to the number of elements stored, and it can be challenging to reorder elements stored in arrays. The ArrayList object has a dynamic size, and the class contains methods for insertion and deletion of elements, making reordering and shifting items easier. Deciding which data structure to select becomes increasingly important as the size of the data set grows, such as when using a large real-world data set. In this unit, students will also learn about privacy concerns related to storing large amounts of personal data and about what can happen if such information is compromised.
ESSENTIAL QUESTIONS
Variables [VAR]
Why is an ArrayList more appropriate for storing your music playlist, while an array might be more appropriate for storing your class schedule?
Control [CON]
How can we use statement execution counts to choose appropriate algorithms?
Impact of Computing [IOC]
What personal data is currently being collected, and how?
BIG IDEAS
+ Representing collections of related object reference data using ArrayList objects
+ Traversing an ArrayList by accessing the elements using iteration statements
+ Standard algorithms that utilize ArrayList traversals to perform functions
+ Searching and sorting using standard algorithms
+ Ethical issues around data collections
UNIT TOPICS & ACTIVITIES
7.1: Introduction to ArrayList
7.2: ArrayList Methods
7.3: Traversing ArrayLists
7.4: Developing Algorithms Using ArrayLists
7.5: Searching
7.6: Sorting
7.7: Ethical Issues Around Data Collection

SKILLS ADDRESSED
Program Design and Algorithm Development
1.B: Determine code that would be used to complete code segments.
Code Logic
2.C: Determine the result or output based on the statement execution order in a code segment containing method calls.
2.D: Determine the number of times a code segment will execute.
Code Implementation
3.D: Write program code to create, traverse, and manipulate elements in 1D array or ArrayList objects.
Code Testing
4.A: Use test-cases to find errors or validate results.
Documentation
5.C: Explain how the result of program code changes, given a change to the initial code.