My final project for CS103 at USC.