Third Assignment for Info 6010: https://courses.cit.cornell.edu/info6010/assignment3.html