{"product_id":"an-experiential-introduction-to-principles-of-programming-languages-isbn-9780262045452","title":"An Experiential Introduction to Principles of Programming Languages","description":"\u003cb\u003eA textbook that uses a hands-on approach to teach principles of programming languages, with Java as the implementation language.\u003c\/b\u003e\u003cbr\u003e\u003cbr\u003eThis introductory textbook uses a hands-on approach to teach the principles of programming languages. Using Java as the implementation language, Rajan covers a range of emerging topics, including concurrency, Big Data, and event-driven programming. Students will learn to design, implement, analyze, and understand both domain-specific and general-purpose programming languages.\u003cbr\u003e \u003cbr\u003e\u003cli\u003eDevelops basic concepts in languages, including means of computation, means of combination, and means of abstraction.\u003c\/li\u003e\u003cli\u003eExamines imperative features such as references, concurrency features such as fork, and reactive features such as event handling.\u003c\/li\u003e\u003cli\u003eCovers language features that express differing perspectives of thinking about computation, including those of logic programming and flow-based programming.\u003c\/li\u003e\u003cli\u003ePresumes Java programming experience and understanding of object-oriented classes, inheritance, polymorphism, and static classes.\u003c\/li\u003e\u003cli\u003e Each chapter corresponds with a working implementation of a small programming language allowing students to follow along.\u003c\/li\u003eList of Figures xiii\u003cbr\u003eList of Tables xvii\u003cbr\u003ePreface xix\u003cbr\u003eRoad Map xxii\u003cbr\u003eI Preliminaries 1\u003cbr\u003e1 Introduction 3\u003cbr\u003e2 Inductive Sets and Functions 15\u003cbr\u003eII Building a Programming Language 33\u003cbr\u003e3 Getting Started 35\u003cbr\u003e4 Varlang: A Language with Variables 71\u003cbr\u003e5 Definelang: A Language with Global Variables 95\u003cbr\u003e6 Funclang: A Language with Functions 105\u003cbr\u003eIII References and Concurrency 145\u003cbr\u003e7 Reflang: A Language with References 147\u003cbr\u003e8 Forklang: A Language with Concurrency and Parallelism 169\u003cbr\u003eIV Types and Specifications 185\u003cbr\u003e9 Typelang: A Language with Types 187\u003cbr\u003e10 Speclang: A Language with Specifications 209\u003cbr\u003eV Advances Features 229\u003cbr\u003e11 Msglang: A Language with Message-Passing Concurrency 231\u003cbr\u003e12 Eventlang: A Language with Events 251\u003cbr\u003eAppendix ANTLR: A Brief Review 265\u003cbr\u003eBibliography 269\u003cbr\u003eIndex 271Hridesh Rajan is Kingland Professor and Chair in the Department of Computer Science at Iowa State University. He has held visiting positions at the University of Bristol, Harvard University, and the University of Texas. He is a Fellow of the AAAS and a distinguished member of the ACM.\u003cbr\u003e ","brand":"The MIT Press","offers":[{"title":"Default Title","offer_id":46300852519141,"sku":"NP9780262045452","price":60.0,"currency_code":"USD","in_stock":false}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1842\/7735\/files\/9780262045452.jpg?v=1767721506","url":"https:\/\/k12savings.com\/products\/an-experiential-introduction-to-principles-of-programming-languages-isbn-9780262045452","provider":"K12savings","version":"1.0","type":"link"}