Algorithmic Contract Theory