Foundations of Programming Languages by Seyed H. Roosta