For assignment 2 of CSCI 4229.