Written for advanced undergraduate and beginning graduate students, Foundations for Programming Languages uses a series of typed lambda calculi to study the axiomatic, operational, and denotational semantics of sequential programming languages. Later chapters are devoted to progressively more sophisticated type systems. Compared to other texts on the subject, Foundations for Programming Languages is distinguished primarily by its inclusion of material on universal algebra and algebraic data types, imperative languages and Floyd-Hoare logic, and advanced chapters on polymorphism and modules, subtyping and object-oriented concepts, and type inference. The book is mathematically oriented but includes discussion, motivation, and examples that make the material accessible to students specializing in software systems, theoretical computer science, or mathematical logic. Foundations for Programming Languages is suitable as a reference for professionals concerned with programming languages, software validation or verification, and programming, including those working with software modules or object-oriented programming.Foundations of Computing series
This book develops several typed lambda calculus-based toy languages and describes their semantics using category theory, universal algebra, model theory and rewriting systems. I must say that Stanford undergraduates are pretty smart if they understand all this stuff.
This book, is something, I might have found some value, in several years ago; however, I found it to be of limited interest at this point. There are some logicians mentioned here, which I don't recall, Henke for example- Kripke's modal logic work I also haven't studied. I am not sure I would recommended this, but it depends on one's interest. A lot of the mathematics is specific to development in semantic models.