CS404 Semester Project