Adjoint Tutorial - Stanford Computer Science