Page Tools:
  • print-friendly version

Programming Languages and Methodologies

Author(s): Robert J. Schalkoff, Clemson University
Details:
  • ISBN-13: 9780763740597
  • ISBN-10:0763740594
  • Hardcover    636 pages      © 2007
Price: International Sales $164.95 US List
Add to Cart Request a Review Copy

Overview

Programming Languages and Methodologies presents a mature, well-rounded view of the entire programming process. Intended for the junior/senior-level student who has completed introductory programming courses, Schalkoff's text discusses the more advanced programming topics, including differing programming methodologies (imperative, declarative, functional, OO, parallel, and event-driven), the concepts of formal grammars and syntax, the concepts and implementation of scanning and parsing, and the concept of semantics. The choice of topics included allows instructors to tailor their approach to suit the needs of the course and provides a wealth of hands-on exercises and experiences. With this text instructors can support their entire course with such public domain platforms as Linux, Mac OS-X or Windows OS at no additional cost to students! Presenting topics related to the ACM/IEEE Model Curriculum, Programming Languages and Methodologies is the ideal text for your Computer Engineering and Computer Science students!

First Print Run Errata

ShowKey Features

The wealth of topics covered, as well as the depth of coverage, allows individual instructors to tailor their approach to a specific audience.

 

Instructors using the text can support their entire course on PCs with the  Linux or Windows OS at no cost.  The author chose software that is public domain or GPLed and available on multiple platforms!

 

Addresses the ACM/IEEE Model Curriculum topics related to Programming Languages.

Back to top

ShowTable of Contents

1.   Introduction:  Programming Concepts and Languages
     1.1   Overview
     1.2   'Productivity' and Moore's Law
     1.3   Programming History:  From Gears to Software Objects
     1.4   Programming Paradigms and Possible Language Taxonomies
     1.5   Introduction to a more Formal Viewpoint
     1.6   Programming Tools
     1.7   Coding Standards and Conventions
     1.8   Some Humor:  The Evolution of a Programmer
2.   From Formal Grammars to Programming Languages
     2.1   Prelude
     2.2   A Syntactic Viewpoint: Programs are Strings
     2.3   Formal Grammars
     2.4   Using Grammars - Derivation Trees and Ambiguity
     2.5   BNF and Alternatives
3.   Programming in Prolog
     3.1   Introduction
     3.2   Prolog Syntax and Use
     3.3   Alternate Imperpretations of Prolog
     3.4   Parsing (Grammatical Recognition) and Prolog
     3.5   Prolog and Constraint Satisfaction Problems (CSP)
4.   Sample Programming Language minic: (Version 1) and Aspects of Scanning and Parsing
     4.1   Overview
     4.2   minic (ver 1) Syntax
     4.3   Development of Parsers for minic: Basic Concerns
     4.4   Parsing
     4.5   Life After Parsing

5.   Using Prolog for Scanning and Parsing
     5.1   Scanner and parser for minic ver 1:  Overall Objectives
     5.2   minic Prolog Scanner
     5.3   Prolog Parser
6.   Scanning and Parsing minic Using flex and bison
     6.1   Building Scanners and Parsers with flex and bison
     6.2   flex and bison
     6.3   flex
     6.4   Applying flex to minic
     6.5   bison
     6.6   Using flex and bison Together for minic
     6.7   A More Complete Example
     6.8   bison:  'Under the Hood'
     6.9   Toward a More Complete Parser/Compiler
7.  Enhancing minic:  Control Statements, Interactive Constructs, Comments and Type Checking
     7.1   minic, Version 2
     7.2   Scanning and parsing minic Version 2 Using flex and bison
     7.3   Scanning and Parsing minic Version 2 Using Prolog
     7.4   Further minic Extensions (Extended Version 2)
     7.5   Scanning and Parsing minic Extended Version 2 Using flex and bison
     7.6   Scanning and Parsing minic Extended Version 2 using Prolog
     7.7   Considering Contextual Constraints and Yped Languages
     7.8   Attribute Grammars
     7.9   flex/bison Implementation of A minic Parser Using Attibute Grammars and a Symbol Table
     7.10 Prolog Implementation of A minic Parser Using Attribute
8.   Functional Programming and the lambda Calculus
     8.1   Introduction to the lambda Calculus and Functional Programming
     8.2   The Syntax and Semantics of the lambda Calculus
     8.3   Functional Programming Concepts and Syntax
     8.4   Side Effects and Functional Programming
     8.5   Functional Programming with Typed Functions: A Preliminary Example Using ML
9.   Lisp
     9.1   Lisp Introduction, Pragmatics and Resources
     9.2   The Lisp Top-Level Loop (EVAL)
     9.3   Basic Common Lisp Building Blocks
     9.4   Basic Lisp Manipulation
     9.5   Lisp Booleans and Conditionals
     9.6   Scope and Iteration in Lisp
     9.7   I/O in COmmon Lisp
     9.8   CommonLisp Macro
     9.9   (Common) Lisp Programming Conventions
     9.10  Funtion (Program) Design, Implementation and Correctness
     9.11  Extended CommonLisp Design Example:  Implementing and Training a Single Artificial Neural Unit
     9.12  CommonLisp FUnctions (and Macros) You Should Know  
10.  Object-Oriented Functional Programming:  The Common Lisp Object System
     10.1  The CommonLisp Object System (CLOS)
     10.2  CommonLisp Object System (CLOS)
     10.3  Relation to Other Programming Languages
11.  Object-Oriented, Typed Functional Programming with Modules: ML and CAML
     11.1  An Introduction to SML/NJ and CAML
     11.2  The SML/NJ Language
     11.3  CAML and ocaml
     11.4  Scanning and Parsing in CAML
     11.5  CAML Compilation with ocamlc
12.  Abstract Syntax and Formal Approaches to Programming Language Semantics
     12.1  Programming Language Semantics
     12.2  Semantics, Semantics, Semantics
     12.3  A Quick Overview of Approaches to Semantics Formalization
     12.4  Semantic Equivalence
     12.5  Semantic Descriptions Using an Abstract Syntax
     12.6  Denotational Semantics
     12.7  Axiomatic Semantics
     12.8  Functional Programming- Semantics and Correctness
     12.9  Algebraic Semantics
13.  Event-Driven Programming Part 1:  Introduction and Window Examples
     13.1  Introduction
     13.2  Example: Microsoft Windows and the MFC
     13.3  Example: The X-Windows System
     13.4  Cross and Multi-Platform Software Development 
14.  Event-Driven Programming Part 2:  PDA Programming with the PalmOS
     14.1  Overview
     14.2  Palm Programming Specifics, Part I
     14.3  A More Elaborate Example (Buttons, Multiple Forms and A Menu)
     14.4  Interaction with User-Entered Data and the 'echo' Application
     14.5  Example: Numerical Input and Computations and Interaction with Fields
     14.6  Additional PalmOS Programming Notes and Features
     14.7  Implementing Databases on the Palm
15.  Parallel Computing and Parallel Programming
     15.1  Introduction
     15.2  Algorithm Decomposition Techniques and Tools
     15.3  Parallelism in Declarative Programming (Prolog)
     15.4  Extension of Languages to Allow Concurrent Programming
     15.5  MPI and Beowulf Cluster Programming
     15.6  Extended MPI Examples
     15.7  Selected (Abbreviated) MPI and MPE man Pages 


Back to top

ShowAbout the Author(s)

Robert J. Schalkoff-Clemson University

Robert J. Schalkoff is currently Professor of Electrical and Computer Engineering at Clemson University.  His primary scholarly interests are in intelligent systems and computing.  He is also the author of Programming Languages and Methodologies, Digital Image Processing and Computer Vision, Artificial Intelligence: An Engineering Approach, Pattern Recognition: Statistical, Syntactic and Neural Approaches, and Artificial Neural Networks.  He received his Ph.D.  in Electrical Engineering from the University of Virginia.

Additional Titles by this Author

Back to top

ShowAppropriate Courses

This text is intended for junior/senior-level students within the departments of Computer Engineering, Computer Science and Mathematics.  It is also ideal as a bridge which leads students who have completed introductory programming into a senior-level course in Software Engineering .

Back to top

ShowSamples & Additional Resources

ShowResources

Back to top