 
Summary: Games in the Semantics of Programming Languages
Samson Abramsky
Department of Computer Science
University of Edinburgh
1 Introduction
Mathematical models of computation, from the –calculus to PRAM's, have played a key
role in the development of software technology, from programming languages to the design
and analysis of algorithms. The first generation of models of computation (c. 19501980)
were functional in character; that is, they abstracted the behaviour of a program as the
computation of a function. This was an appropriate abstraction in the era of batch processing,
and provided a good basis for the formalization of the correctness of such programs with
respect to their specifications, and of the computational complexity of algorithmic problems.
Meanwhile, Information Technology had progressed from batch processing through multi
tasking operating systems to distributed systems and on to today's Internet. The focus has
correspondingly shifted, from standalone programs to systems, and from computation to
interaction. Standalone programs computing functions are now seen as (very) special cases
of a wider class of behaviours, in which the components of a complex system of concurrently
executing agents interact with each other to achieve some global effect. On a ``macro'' scale,
this description evidently fits today's distributed transactions across the Internet; but on
a ``micro'' scale, it is equally true of how functional computations are ultimately realized,
