CmpE 285 Final project