This innovative text presents computer programming as a unified discipline in a way that is both practical and scientifically sound. The book focuses on techniques of lasting value and explains them precisely in terms of a simple abstract machine. The book presents all major programming paradigms in a uniform framework that shows their deep relationships and how and where to use them together. Table of Contents Preface xiii Running the Example Programs xxix 1. Introduction to Programming Concepts 1 I. GENERAL COMPUTATION MODELS 27 2. Declarative Computation Model 29 3. Declarative Programming Techniques 111 4. Declarative Concurrency 233 5. Message-Passing Concurrency 345 6. Explicit State 405 7. Object-Oriented Programming 489 8. Shared-State Concurrency 569 9. Relational Programming 621 II. SPECIALIZED COMPUTATION MODELS 677 10. Graphical User Interface Programming 679 11. Distributed Programming 707 12. Constraint Programming 749 III. SEMANTICS 777 13. Language Semantics 779 IV. APPENDICES 813 A. Mozart System Development Environment 815 B. Basic Data Types 819 C. Language Syntax 833 D. General Computation Model 843 References 853 Index 863