After this module, you should:
- know why a direct table or hash table might be preferable to other
implementations of a collection ADT
- understand how to resolve collisions in a hash table by chaining
- be able to explain the Simple Uniform Hashing assumption and why it
is needed to ensure good average-case performance of hash table operations
- know common strategies for converting integer-valued hashcodes to table
indices, including both division and multiplicative hashing