Assignment 3: Copy `SimpleSemaphore` from Assignment 2