This chapter treats polymorphism from a foundational perspective. It characterizes abstract inheritance as employed in knowledge representation and proceeds with a formal definition of the subtype relation, culminating in a family of calculi for a type theoretical analysis of the constructs employed in object-oriented programming. The features studied include generic types, overloading, data hiding and self-references.
Due to the formal background needed, the project assignments listed below have the flavor of research projects and must be considered for advanced students only. Possible assignments are
Since some of this work has already be done (see below), one may simply advise students to study these efforts.