Advanced Issues in Object Oriented Programming

Module aims

To discuss issues around the design and implementation of object oriented languages, the rationale and explore alternatives. To use formal calculi as an unambiguous notation, and as a way to establish soundness.

Learning outcomes

After the course, students should
- be able to develop a formal description of a small extension of the languages described in the course
- understand the interplay between static and dynamic checks, and the various checks applied at the different phases of execution
- understand how efficiency of implementation issues, and understand how some oo features can be implemented efficiently eg object layout, virtual tables, (multiple/virtual) inheritance
- understand the difference-similarities of the object based and class based paradigm

Module syllabus

Motivation, type system of some language(s) unsafe. Static vs dynamic types. Sound type systems.

L1: a minimal, class based, imperative, object oriented language with methods and fields. Operational Semantics, Type system, Agreement, Soundness.

L2: L1+inheritance. Operational Semantics, Type system, Agreement, Soundness.
The expressive power of L2: Numbers and Boolean.

C++ features and implementation. Pointer vs Value Types. Single Inheritance, Multiple Inheritance. Virtual Inheritance. Object layout, virtual tables, implementation of assignment and of method call.

The Java virtual machine. The bytecode verifier. Formalization

Java dynamic linking.

Ownership types.

The Abadi & Cardelli Object Calculus.


Students need to have programmed in an OO programming language, and need to have basic mathematical skills.

Teaching methods

 Lectures, and exercises interleaved with the lectures


*This is a level 7/M course

Reading list

Module leaders

Professor Sophia Drossopoulou