exercises from 600 at MIT