Peter Van Roy and Seif Haridi
This textbook is designed for second-year courses up to graduate courses in computer programming. It covers all major programming concepts, techniques, and paradigms in a unified framework. It is based on the kernel language approach, in which programming languages are defined in terms of their underlying concepts. The textbook defines a wide variety of programming languages and paradigms with a small set of closely-related kernel languages. The kernel languages are easy to understand by practicing programmers and have a simple formal semantics that makes it easy to reason about correctness and complexity at a high level of abstraction. The textbook is designed to be used together with the Mozart Programming System.