---
tags: Setup-Summer21
---
# Lecture 5 Setup/Prep
We're going to build on what we have done so far by working on two problems:
1. We're going to expand our collection of animals, reiterating the ideas of extending objects and implementing interfaces (10 minutes)
2. Implementing lists from scratch.
We will start the second part by asking:
- what combination of classes, interfaces, and abstract classes should we use to implement lists from scratch?
This lecture will focus on functional-style lists, in which operations to add/delete elements produce new lists, rather than modify existing lists. (We'll implement updating lists in a couple of classes.)
**If you have implemented LinkedLists through objects before, you may be surprised by aspects of how we will do this.** (*Hint: In particular, we will only use concepts that we have covered in lecture up until now*)
## Prep
There are no starter files for this lecture. For part 1, we'll build on the files for lecture 4. For part 2 (lists), you might want to create a `lec05` package, as we will develop code from scratch.
It's worth coming to class having thought about how you might do the following before we show the solution.
- Propose a collection of classes, interfaces, and abstract classes for linked lists