CS328: Abstract Data Types.
