Design and foundations of object-oriented and component-based languages
Component-based programming, Modules and separate compilation, Dynamic software evolution
- definition of typed calculi providing the formal underpinnings for the design and implementation of components systems which support code reuse, adaptation, and dynamic
- analysis and formalization of features in object-oriented languages;
- design, formalization and implementation of extensions of object-oriented languages which improve expressive power, code reuse and extensibility, while mantaining type safety: notably, mixin modules and classes, polymorphic methods, and dynamic object re-classification (collaboration with University of Torino and Imperial College, London);
- type systems supporting compositional analysis and their application to the development of innovative compilation and linking techniques for Java-like languages (collaboration with University of Torino and Imperial College, London).