  Domain theory is `a mathematical theory that serves as a foundation for the
semantics of programming languages'. Domains form the basis of a theory of
partial information, which extends the familiar notion of partial function to
encompass a whole spectrum of "degrees of definedness", so as to model
incremental higher-order computation (i.e., computing with infinite data
values, such as functions defined over an infinite domain like the domain of
integers, infinite trees, and such as objects of object-oriented programming).
General considerations from recursion theory dictate that partial functions are
unavoidable in any discussion of computability. Domain theory provides an
appropriately abstract setting in which the notion of a partial function can be
lifted and used to give meaning to higher types, recursive types, etc. NOOP is
a domain-theoretic model of nominally-typed OOP. NOOP was used to prove the
identification of inheritance and subtyping in mainstream nominally-typed OO
programming languages and the validity of this identification. In this report
we first present the definitions of basic domain theoretic notions and domain
constructors used in the construction of NOOP, then we present the construction
of a simple structural model of OOP called COOP as a step towards the
construction of NOOP. Like the construction of NOOP, the construction of COOP
uses earlier presented domain constructors.
