Concepts, Techniques, and Models of Computer Programming (The MIT Press)