## Learning Outcomes

At the end of this lecture, you’ll be able to:

- Identify the steps of
**hashing**(convert to hash code and compression). - Enumerate the properties of a
*good*hash function. - Describe the job of Java’s
`hashCode`

method. - Define what a hash table is.
- Explain what
**collision**(in the context of hashing) is and when it happens. - Describe
__Open Addressing with Linear Probing__as a collision resolution. - Understand and apply the
**tombstone mechanism**when removing an entry from a Hash Table with open addressing schemes.

## Lecture Plan

In this lecture, we'll cover the following lessons:

- Hash Table: Motivation
- Hash Table: The Big Picture
- Hash Table: Hash Function
- Hash Function: Java's hashCode()
- Hash Table: The Challenge
- Hash Table: Collisions
- Collision Resolution: Open Addressing
- Open Addressing: Linear Probing
- Linear Probing: Exercise I⚡
- Linear Probing: Exercise II⚡
- Linear Probing: Lazy Deletion

Lessons marked with ⚡ contain exercise/activity.