Read Eraser: A Dynamic Data Race Detector for Multithreaded Programs.
Turn in your answers as Exercise 18. You’re also recommended to try MIT 6.033’s Helgrind hands-on.