Programming Languages: Principles and Practices 3rd Edition by Kenneth C. Louden, ISBN-13: 978-1111529413


Programming Languages: Principles and Practices 3rd Edition by Kenneth C. Louden, ISBN-13: 978-1111529413

[PDF eBook eTextbook]

  • Publisher: ‎ Cengage Learning; 3rd edition (January 26, 2011)
  • Language: ‎ English
  • 704 pages
  • ISBN-10: ‎ 1111529418
  • ISBN-13: ‎ 978-1111529413

Kenneth Louden and Kenneth Lambert’s new edition of PROGRAMMING LANGUAGES: PRINCIPLES AND PRACTICE, 3E gives advanced undergraduate students an overview of programming languages through general principles combined with details about many modern languages. Major languages used in this edition include C, C++, Smalltalk, Java, Ada, ML, Haskell, Scheme, and Prolog; many other languages are discussed more briefly. The text also contains extensive coverage of implementation issues, the theoretical foundations of programming languages, and a large number of exercises, making it the perfect bridge to compiler courses and to the theoretical study of programming languages.

Table of Contents:

Overview and Organization
Use as a Text
Summary of Changes between the Second and Third Editions
Instructor and Student Resources
Notes and References
CHAPTER 1: Introduction
1.1 The Origins of Programming Languages
1.2 Abstractions in Programming Languages
1.3 Computational Paradigms
1.4 Language Definition
1.5 Language Translation
1.6 The Future of Programming Languages
Notes and References
CHAPTER 2: Language Design Criteria
2.1 Historical Overview
2.2 Efficiency
2.3 Regularity
2.4 Security
2.5 Extensibility
2.6 C++: An Object-Oriented Extension of C
2.7 Python: A General-Purpose Scripting Language
Notes and References
CHAPTER 3: Functional Programming
3.1 Programs as Functions
3.2 Scheme: A Dialect of Lisp
3.3 ML: Functional Programming with Static Typing
3.4 Delayed Evaluation
3.5 Haskell—A Fully Curried Lazy Language with Overloading
3.6 The Mathematics of Functional Programming: Lambda Calculus
Notes and References
CHAPTER 4: Logic Programming
4.1 Logic and Logic Programs
4.2 Horn Clauses
4.3 Resolution and Unification
4.4 The Language Prolog
4.5 Problems with Logic Programming
4.6 Curry: A Functional Logic Language
Notes and References
CHAPTER 5: Object-Oriented Programming
5.1 Software Reuse and Independence
5.2 Smalltalk
5.3 Java
5.4 C++
5.5 Design Issues in Object-Oriented Languages
5.6 Implementation Issues in Object-Oriented Languages
Notes and References
CHAPTER 6: Syntax
6.1 Lexical Structure of Programming Languages
6.2 Context-Free Grammars and BNFs
6.3 Parse Trees and Abstract Syntax Trees
6.4 Ambiguity, Associativity, and Precedence
6.5 EBNFs and Syntax Diagrams
6.6 Parsing Techniques and Tools
6.7 Lexics vs. Syntax vs. Semantics
6.8 Case Study: Building a Syntax Analyzer for TinyAda
Notes and References
CHAPTER 7: Basic Semantics
7.1 Attributes, Binding, and Semantic Functions
7.2 Declarations, Blocks, and Scope
7.3 The Symbol Table
7.4 Name Resolution and Overloading
7.5 Allocation, Lifetimes, and the Environment
7.6 Variables and Constants
7.7 Aliases, Dangling References, and Garbage
7.8 Case Study: Initial Static Semantic Analysis of TinyAda
Notes and References
CHAPTER 8: Data Types
8.1 Data Types and Type Information
8.2 Simple Types
8.3 Type Constructors
8.4 Type Nomenclature in Sample Languages
8.5 Type Equivalence
8.6 Type Checking
8.7 Type Conversion
8.8 Polymorphic Type Checking
8.9 Explicit Polymorphism
8.10 Case Study: Type Checking in TinyAda
Notes and References
CHAPTER 9: Control I—Expressions and Statements
9.1 Expressions
9.2 Conditional Statements and Guards
9.3 Loops and Variations on WHILE
9.4 The GOTO Controversy and Loop Exits
9.5 Exception Handling
9.6 Case Study: Computing the Values of Static Expressions in TinyAda
Notes and References
CHAPTER 10: Control II—Procedures and Environments
10.1 Procedure Definition and Activation
10.2 Procedure Semantics
10.3 Parameter-Passing Mechanisms
10.4 Procedure Environments, Activations, and Allocation
10.5 Dynamic Memory Management
10.6 Exception Handling and Environments
10.7 Case Study: Processing Parameter Modes in TinyAda
Notes and References
CHAPTER 11: Abstract Data Types and Modules
11.1 The Algebraic Specification of Abstract Data Types
11.2 Abstract Data Type Mechanisms and Modules
11.3 Separate Compilation in C, C++ Namespaces, and Java Packages
11.4 Ada Packages
11.5 Modules in ML
11.6 Modules in Earlier Languages
11.7 Problems with Abstract Data Type Mechanisms
11.8 The Mathematics of Abstract Data Types
Notes and References
CHAPTER 12: Formal Semantics
12.1 A Sample Small Language
12.2 Operational Semantics
12.3 Denotational Semantics
12.4 Axiomatic Semantics
12.5 Proofs of Program Correctness
Notes and References
CHAPTER 13: Parallel Programming
13.1 Introduction to Parallel Processing
13.2 Parallel Processing and Programming Languages
13.3 Threads
13.4 Semaphores
13.5 Monitors
13.6 Message Passing
13.7 Parallelism in Non-Imperative Languages
Notes and References

Kenneth C. Louden is Emeritus Professor of Computer Science and a past chair of the Department of Computer Science at San Jose State University, Silicon Valley’s primary supplier of graduates to the tech industry. He has written several texts and articles on advanced topics in computer science.

Kenneth A. Lambert is Professor of Computer Science and Head of the Department at Washington and Lee University. He has taught programming language design for 25 years and has been an active researcher in computer science education. Lambert has co-authored a series of introductory C++ textbooks with Douglas Nance and Thomas Naps and a series of introductory Java textbooks with Martin Osborne, and is the author of an introductory Python textbook. He is also the co-creator of the BreezySwing framework and is the creator of the breezypythongui framework.

What makes us different?

• Instant Download

• Always Competitive Pricing

• 100% Privacy

• FREE Sample Available

• 24-7 LIVE Customer Support


There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.