Project 3 for CS61BL Summer 2013, Section 104.