Working through Essentials of Programming Languages