Advanced Issues in Object Oriented Programming
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.
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
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.
The Abadi & Cardelli Object Calculus.
Students need to have programmed in an OO programming language, and need to have basic mathematical skills.
Lectures, and exercises interleaved with the lectures
*This is a level 7/M course