Working through Benjamin Pierce's wonderful Types and Programming Languages