Principles of Programming Languages introduces the tools, methods, and algorithms involved in designing and implementing languages as specialized tools. It emphasizes on practical aspects while describing the theories behind the industry practices. The flow of information in this book follows a logical order in which a language can be designed and implemented. Using this book, students learn how to make tools such as command line interpreters. Moreover, they learn about the alternative ways of computation such as lambda calculus and functional programming. In addition, there are other learning outcomes as byproducts such as using finite automata in problem-solving.
The book provides design examples and exercises with answers. This allows students to perform self-evaluation. The exercises allow the instructor to perform active learning in the class environment. Active learning has been proven to be a very effective teaching method. This book has been designed for a semester course in University. It covers all fundamental topics a computing science student needs to know about programming languages. The feedback the author has received from his students who are already working in industry shows that the topics of this book are very beneficial to trainees.
Chapter 1: Introduction
Part One: Design and Implementation
Chapter 2: Syntax Design
Chapter 3: Semantics Design
Chapter 4: Lexical Analysis
Chapter 5: Top-Down Parsing
Chapter 6: Bottom-Up Parsing
Chapter 7: Parser Generators
Chapter 8: Implementation Models
Part Two: Alternative Programming Paradigms
Chapter 9: Functional Programming
Chapter 10: Object-Oriented Programming
Chapter 11: Introduction to Concurrent Programming
Chapter 12: Evaluation Criteria
Chapter 13: Languages Evolution
References
Answer To Exercises
MOHAMMAD
DONYAEE
Dr. Donyaee is a scientist with hands-on industry experience. He has taught computer science courses in multiple universities across USA and Canada as well as hands-on courses in companies such as Pratt & Whitney Canada. He has designed and led many aerospace projects as well as projects in the energy sector. He used programming languages principles in many projects. One example was designing a parser to perform reverse engineering on a legacy project. In this project the architecture of system was reconstructed from its source code.
Working on different types of industry projects allowed him to bring real world examples to his classes, which proved to be in the interest of students. Research interests of Dr. Donyaee include predictive intelligent models for software quality. His latest research project is the design of a programming language. The purpose of this project is increasing the learnability score for programming languages.