Question #1: A lot of students tried an example with one thread doing insert() and the other doing lookup(), which is not necessarily easy due to our correctness semantics. Instead, looking at two threads doing insert() is much more natural (two threads update a data structure concurrently, which is the standard race-condition-causing scenario).