Computer Organization and Architecture 
Werner Kluge, Prof.(em.) 

EMail:  wk@informatik.unikiel.de 
Major parts of my past research work are outlined in a monograph on
Abstract Computing Machines which has been published in the Springer EATCS series
(ISBN 3540211462).
This monograph is on the relationship between
basic programming paradigms as they derive from Lambda calculus
and the abstract machines featuring the runtime
structures and mechanisms that are essential for program execution.
It sets out with a brief discussion of an
expressionoriented style of programming, addresses the problem
of correctly dealing with free variables as a prerequisite
for symbolic computations, and gives a brief introduction to
Lambda calculus as the underlying theory.
In its main part, the book is primarily concerned with the
description of what are called fully normalizing
Lambdacalculus machines. They support the runtime structures and
mechanisms necessary to correctly perform substitutions
that may involve free variables,
and to do symbolic selfoptimizations under functions
(abstractions), thus
treating both functions and variables truly as first class objects.
These machines are related to various
weakly normalizing counterparts which are the work horses
for the implementation of conventional functional languages.
They rule out
substitution and evaluation under abstractions to avoid
problems with free variables, which considerably
simplifies the machinery but at the same time also
sacrifices many of the amenities of symbolic computations.
Abstract machines for imperative languages are shown to be direct
descendants of weakly
normalizing Lambdacalculus machines. They permit sideeffecting
substitutions on an otherwise nearly identical runtime environment
which, however, destroy the ChurchRosser property of the Lambda
calculus, merely keeping its scoping rules intact.
I used the material contained in this book
in various graduate courses on basic concepts of computer
organization/architecture; some of the
material of the first five chapters I also used in undergraduate
courses on functionbased programming.
As it so happens when publication deadlines have to be met,
the book contains a few errors, many of which are just typos.
But it also includes a serious mistake concerning the definition
in chapter 5 of the SE(M)CD machine, which I run across while
preparing course material for a summer school.
A correction of this blunder and also of the typos that have been
detected so far can be found under
errata
A more recent paper on
Abstract Lambda Calculus Machines that is based
on material contained in this monograph appeared
in the proceedings of the