Class project for MIT 6.813.