Semester Project for CSII (CS2336).