CmpE277 final project