Quick Summary from Tuesday's lecture on hash maps, or hash tables:
hash function is a way to mash up (my term) the name of something into a numerical key
the % operator is one way to lower/minimize the number of possible keys into a manageable number of buckets
we use buckets to hold one or more values based on the key
with a small range of keys, we can use an array data structure to O(1) access a bucket and we can represent a bucket with a linked list data structure.
if the number of keys available is too small for the number of values we are using, we approach O(n) accesses to get values (no difference from a linked list & no advantage to using a hash map!) so we may want to resize