navigation bar
Computer & Engineering Publishing Group    e d u c a t i o n

 

 

This title is available for purchase on-line!

Programming Languages

Concepts and Constructs, Second Edition

by: Ravi Sethi

Instructors! Request a complimentary desk copy for review

Table of Contents

I. Introduction

1. The Role of Programming Languages

  1. Toward Higher-Level Languages
  2. Problems of Scale
  3. Programming Paradigms
  4. Language Implementation: Bridging the Gap
    Exercises
    Bibliographic Notes

2. Language Description: Syntactic Structure

  1. Expression Notations
  2. Abstract Syntax Trees
  3. Lexical Syntax
  4. Context-Free Grammars
  5. Grammars for Expressions
  6. Variants of Grammars
    Exercises
    Bibliographic Notes

II. Imperative Programming

3. Statements: Structured Programming

  1. The Need for Structured Programming
  2. Syntax-Directed Control Flow
  3. Design Considerations: Syntax
  4. Handling Special Cases in Loops
  5. Programming with Invariants
  6. Proof Rules for Partial Correctness
  7. Control flow in C
    Exercises
    Bibliographic Notes

4. Types: Data Representation

  1. The Role of Types
  2. Basic Types
  3. Arrays: Sequences of Elements
  4. Records: Named Fields
  5. Unions and Variant Records
  6. Sets
  7. Pointers: Efficiency and Dynamic Allocation
  8. Two String Tables
  9. Types and Error Checking
    Exercises
    Bibliographic Notes

5. Procedure Activations

  1. Introduction to Procedures
  2. Parameter-Passing Methods
  3. Scope Rules for Names
  4. Nested Scopes in the Source Text
  5. Activation Records
  6. Lexical Scope: Procedures as in C
  7. Lexical Scope: Nested Procedures and Pascal
    Exercises
    Bibliographic Notes

III. Object-Oriented Programming

6. Groupings of Data and Operations

  1. Constructs for Program Structuring
  2. Information Hiding
  3. Program Design with Modules
  4. Modules and Defined Types
  5. Class Declarations in C++
  6. Dynamic Allocation in C++
  7. Templates: Parameterized Types
  8. Implementation of Objects in C++
    Exercises
    Bibliographic Notes

7. Object-Oriented Programming

  1. What is an Object?
  2. Object-Oriented Thinking
  3. Inheritance
  4. Object-Oriented Programming in C++
  5. An Extended C++ Example
  6. Derived Classes and Information Hiding
  7. Objects in Smalltalk
  8. Smalltalk Objects have a Self
    Exercises
    Bibliographic Notes

IV. Functional Programming

8. Elements of Functional Programming

  1. A Little Language of Expressions
  2. Types: Values and Operations
  3. Function Declarations
  4. Approaches to Expression Evaluation
  5. Lexical Scope
  6. Type Checking
    Exercises
    Bibliographic Notes

9. Functional Programming in a Typed Language

  1. Exploring a List
  2. Function Declaration by Cases
  3. Functions as First-Class Values
  4. ML: Implicit Types
  5. Data Types
  6. Exception Handling in ML
  7. Little Quilt in Standard ML
    Exercises
    Bibliographic Notes

10. Functional Programming with Lists

  1. Scheme, a Dialect of Lisp
  2. The Structure of Lists
  3. List Manipulation
  4. A Motivating Example: Differentiation
  5. Simplification of Expressions
  6. Storage Allocation for Lists
    Exercises
    Bibliographic Notes

V. Other Paradigms

11. Logic Programming

  1. Computing with Relations
  2. Introduction to Prolog
  3. Data Structures in Prolog
  4. Programming Techniques
  5. Control in Prolog
  6. Cuts
    Exercises
    Bibliographic Notes

12. An Introduction to Concurrent Programming

  1. Parallelism in Hardware
  2. Streams: Implicit Synchronization
  3. Concurrency as Interleaving
  4. Liveness Properties
  5. Safe Access to Shared Data
  6. Concurrency in Ada
  7. Synchronized Access to Shared Variables
    Exercises
    Bibliographic Notes

VI. Language Description

13. Semantic Methods

  1. Synthesized Attributes
  2. Attribute Grammars
  3. Natural Semantics
  4. Denotational Semantics
  5. A Calculator in Scheme
  6. Lexically Scoped Lambda Expressions
  7. An Interpreter
  8. An Extension: Recursive Functions
    Exercises
    Bibliographic Notes

14. Static Types and the Lambda Calculus

  1. Equality of Pure Lambda Terms
  2. Substitution Revisited
  3. Computation with Pure Lambda Terms
  4. Programming Constructs as Lambda-Terms
  5. The Typed Lambda Calculus
  6. Polymorphic Types
    Exercises
    Bibliographic Notes

15. A Look at Some Languages

  1. Pascal: A Teaching Language
  2. C: Systems Programming
  3. C++: A Range of Programming Styles
  4. Smalltalk, the Language
  5. Standard ML
  6. Scheme, a Dialect of Lisp
  7. Prolog

Bibliography
Credits
Index

Last revised on July 28, 2001 22:59:18 +0300 .