|
The von Neumann model of computing has formed
the basis of virtually all of the "traditional" programming languages
such as Fortran, C, Pascal, Cobol, Ada, etc. The goal of the course
is to introduce the student to a number of the latest developments
in alternatives to the von Neumman model, and describe some of the
more significant languages which have been derived from them. Understanding
these developments will involve a four step process. First, the fundamental
mathematics behind the computational models will be reviewed. Then
we will introduce the key abstract machines that mechanize this mathematics
into a computational model, and provide the common semantics for languages
of each class. Third, we will introduce the "prototypical" programming
language fro that class (Lisp, Prolog, and Smalltalk), and how the
syntax of these languages permit direct specification of the kinds of
computational steps provided in the abstract machines. This includes
compilers and interpreters, especially self-interpreters. Finally,
we will survey other common languages in each class, architectures of
real machines that were optimized for them, and unique capabilities offered
by them, such as true and very natural parallelism.
Although much of the discussion and many of the assignments
will involve snippets of code, this is not a course in programming
per se; instead the emphasis on acquiring a deep understanding
on why different classes of computational models are useful, and how
these models very naturally lead to new programming languages.
|