"About the Book ""A Java-based experiential text for the introductory programming languages course""-- Book Synopsis A textbook that uses a hands-on approach to teach principles of programming languages, with Java as the implementation language. This 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. Develops basic concepts in languages, including means of computation, means of combination, and means of abstraction. Examines imperative features such as references, concurrency features such as fork, and reactive features such as event handling. Covers language features that express differing perspectives of thinking about computation, including those of logic programming and flow-based programming. Presumes Java programming experience and understanding of object-oriented classes, inheritance, polymorphism, and static classes. Each chapter corresponds with a working implementation of a small programming language allowing students to follow along. About the Author Hridesh 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."