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