Programming Language Fundamentals by Example

Programming Language Fundamentals by Example

Published:
Content:
Author(s):
Free Standard Shipping

Purchasing Options

Hardback
$99.95 $79.96
ISBN 9780849370168
Cat# AU7016
Add to cart
SAVE 20%
eBook (VitalSource)
$99.95 $69.97
ISBN 9781420013351
Cat# AUE7016
Add to cart
SAVE 30%
eBook Rentals
Other eBook Options:
 
 

Features

  • Prepares students for advanced work in theoretical computer science or languages
  • Guides students through the process of implementing a programming language compiler
  • Explains formal grammars, automata, denotational and axiomatic semantics, rule-based presentation, and more
  • Includes case-based exercises and a semester-long project, presenting students with applied methods
  • Uses a problem-based learning approach and case-based pedagogy
  • Provides practical project management methods based on Humphrey's Personal Software Process
  • Summary

    Written in an informal yet informative style, Programming Language Fundamentals by Example uses active learning techniques, giving students a professional learning experience based on professional methods applied with professional standards. It provides an understanding of the many languages and notations used in computer science, the formal models used to design phases, and the foundations of languages including linguistics and logic.

    To give students a thorough, working knowledge of programming languages, this textbook uses a semester-long project in which students create a programming language. This project brings to life the concepts and theories fundamental to computer languages. The author incorporates "thinking tools" such as concept maps, matrices for analysis, and flowcharts.

    Designed for fourth year undergraduates and first year graduates with enough exposure to programming to absorb the technical foundations of languages, this textbook offers a unique approach to understanding how programming languages are created and function.

    Table of Contents

    A WORD ABOUT USING THIS TEXT
    Expectations for the Student and Instructor
    Opening Comments
    Possible Semester Course
    Detailed Semester Plan
    Milestone Maps

    INTRODUCTION TO THE PROBLEM
    Memorandum From the President
    Background
    SOL
    Primitive Data and Primitive Operations
    Primitive Data Operations
    Control Structures
    Expressions
    Input File Structures and File Scope
    Derived Types
    Scope and Persistence
    Type System
    Primitive Functions and Arguments
    Built-in Values, Functions and Pseudo-Functions
    Type Conversions
    Part 1. Milestones

    GENERAL INFORMATION
    General Information on Milestones
    Milestone Report
    General Resources
    Makefile Prototype
    Milestone I. Learning a New Language: gForth
    Milestone Requirements: Introduction to gForth
    Case 1. String Representation
    Introduction to gForth
    Programming in gForth
    Introduction to Milestone Cases
    Case 2. Elementary Arithmetic Statements
    Case 3. Round 2: More Arithmetic
    Case 4. if, while Statements and User-Defined Functions
    Case 5. Complex Data Types
    Case 6. Functions
    Milestone II. Lexical Structure and Scanner
    Case 7. Project Management
    Objectives
    Professional Methods and Values
    Assignment
    Special Reporting Requirements
    Additional Information
    Scanner Design
    Case 8. Designing the Tokens
    Case 9. Development of Finite State Automata Definitions
    Case 10. Finite State Machine Design
    Scanner Design Extended
    Case 11. Reasoning about Design
    Work Breakdown Structure
    Case 12. Scanner Work Breakdown Structure
    Symbol Tables
    Case 13. Symbol Table Design
    Milestone III. Parsing
    Objectives
    Professional Methods and Values
    Assignment
    Case 14. Do We Have To Work Hard?
    Testing Requirement
    Grammars and Things Grammatical
    Case 15. Conversion of FSA Graphs to Grammars
    Parser Design Using Production Systems
    Parser Design II
    Case 16. Converting the S Production to Code
    Testing the Parser: Context Free Language Generation
    Case 17. Structural Induction of Words
    Case 18. Developing the Parsing Grammar
    Milestone IV. Type Checking
    Objective
    Professional Methods and Values
    Assignment
    Performance Objectives
    Milestone Report
    What is a Type?
    Reasoning about Types
    Case 19. Historically Important Languages
    Developing Type Rules
    Case 20. ML Type System
    Design Issues
    Developing Type-Checking Rules
    Case 21. Type Conversion Matrix
    Specification for the Whole Type Checker
    Case 22. Form of Input
    The Search Algorithm
    Case 23. Should bools be allowed?
    Unification and Type Checking Algorithm
    Case 24. Type Checking and the Symbol Table
    Case 25. Developing the Type Checking Algorithm
    Milestone V. Elementary Compiling: Constants Only
    Objectives
    Professional Methods and Values
    Assignment
    Performance Objectives
    String Implementation
    Ifs and Whiles
    Milestone Report
    Milestone VI. Scoping and Local Variables
    Variables and Local Values
    Scoping and SOL
    Case 26. Binding Times and Scope
    Case 27. Scopes: Filling in the Details
    Compiling Issues for SOL
    Case 28. Handling Nested Scopes
    Case 29. Getting to the Details: Scope and Forth
    Case 30. Stack Effects
    Milestone VII. User-Defined Functions
    Objective
    Assignment
    Performance Objectives
    Milestone Report
    Binding the Function Name to the Function
    Recursive and Non-Recursive Functions
    Implementation Issues
    Case 31. Passing Parameters in SOL
    Case 32. Return Values
    Milestone VIII. User-Defined Complex Data
    Assignment
    Performance Objectives
    Milestone Report
    Fundamental Concepts
    Writing Arrays and Structures in SOL
    Case 33. gForth Structures
    Milestone IX. Classes and Objects
    Classess and Classs
    Assignment
    Performance Objectives
    Milestone Report
    Encapsulation and Information Hiding
    Inheritance
    Polymorphism
    Part 2. General Information

    PROJECT
    Class
    Mind Maps

    INTRODUCTION TO LINGUISTICS
    Focus Problem
    Philosophy of Linguistics
    Meaning: Language, Mind and World
    Case 34. What Does An Infinite Loop Mean?
    What is Syntax?
    Case 35. What Can We Learn From A Dictionary?
    Case 36. How Does What We learned Play Out In Programming Languages?
    Grammar
    Case 37. English Grammar with Production Rules
    Case 38. Grammars in Programming Languages
    Semantics
    Focused SQRRR

    LINGUISTICS FOR PROGRAMMING LANGUAGES
    Meta language versus Object language
    Surface Structure and Deep Structure
    Case 39. What is the Proper Way to Form Java Symbols?
    Case 40. What are the Parts of Speech in Java?
    Case 41. How is the Syntax of Java Presented to Developers?
    Case 42. Graph Models of Syntax
    3. Structural Induction
    Case 43. Structural Induction
    Interpretation Semantics
    What about Pragmatics?

    WHAT IS A GENERAL STRUCTURE FOR COMPILING
    A General Framework
    Case 44. Merging Linguistics and Compiling
    Case 45. Process Ordering
    Types
    Case 46. Primitive Data Types
    Recap
    Defining a Language
    Case 47. Designing Modules
    A UNIFIED APPROACH TO DESIGN
    Introduction to Design
    Two Elements
    Using These Ideas in Design
    Case 48. Match-case semantics
    Design Recap

    TECHNICAL FOUNDATIONS IN PROGRAMMING LANGUAGES
    Introduction
    Case 49. Early History of Programming Languages
    Binding Times: When Do We Know?
    Scope
    Case 50. SOL Definitional Environments
    The _-Calculus Model
    Case 51. Argument Passing
    Implementation Issues

    STORAGE MANAGEMENT ISSUES
    Computer Memory 261
    Determining the Size Required
    Case 52. Design an Algorithm to Calculate Size
    Case 53. Why Does sizeof compute 16 and not 13?
    Case 54. Design an Addressing Polynomial for Arrays
    Case 55. Develop Extended Addressing Polynomial
    Case 56. General 2-Dimensional Array Addressing Polynomial
    Runtime Storage Management
    Case 57. Stack Frame Manipulation
    Case 58. Listing Activation Records

    PERSONAL SOFTWARE DESIGN PROCESS PORTFOLIO Time Management for Computer Science Students
    Case 59. Tracking Your Time Usage
    Discovering How Long It Takes to Write a Program
    Earned Value Computations
    Appendix: Templates
    Summary Information for PDSPP0
    Requirements Template (RWT)
    Time Recording Log (TRT)
    Schedule Planning Template (SPT)
    Defect Log Template (DLT)

    HOW DID WE GET HERE? WHERE DO WE GO FROM HERE?
    Looking Behind
    The Role of the _-calculus
    Moving Forward from 1954
    From 1954 Until 1965
    Programming Languages from 1965-1980
    The 1980s and 1990s: The Object Oriented Paradigm
    The Parallel Processing Revolution
    Critique of the Present
    Appendix A. Reflections by One Good Student
    Milestone I
    Milestone II-III
    Milestone IV

    Editorial Reviews

    "…a shining example of how to use educational ideas in computer science education…unique in the computer science education market, offering a unique approach to understanding how programming languages are created and function. The book should certainly put students one step closer to being prepared to function as designers in the real world."
    www.SirReadaLot.org, January Issue, 2007

     
    Textbooks
    Other CRC Press Sites
    Featured Authors
    STAY CONNECTED
    Facebook Page for CRC Press Twitter Page for CRC Press You Tube Channel for CRC Press LinkedIn Page for CRC Press Google Plus Page for CRC Press Pinterest Page for CRC Press
    Sign Up for Email Alerts
    © 2014 Taylor & Francis Group, LLC. All Rights Reserved. Privacy Policy | Cookie Use | Shipping Policy | Contact Us