Programming Language Fundamentals by Example: 1st Edition (Hardback) book cover

Programming Language Fundamentals by Example

1st Edition

By D.E. Stevenson

Auerbach Publications

256 pages | 84 B/W Illus.

Purchasing Options:$ = USD
Hardback: 9780849370168
pub: 2006-11-10
SAVE ~$17.25
$115.00
$97.75
x
eBook (VitalSource) : 9780429117121
pub: 2006-11-10
from $28.98


FREE Standard Shipping!

Description

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.

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

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

Subject Categories

BISAC Subject Codes/Headings:
COM000000
COMPUTERS / General
COM051010
COMPUTERS / Programming Languages / General
MAT000000
MATHEMATICS / General