Compositional Programming

Speaker: Dr. Bruno Oliveira
         Department of Computer Science
         University of Hong Kong

Title:  "Compositional Programming"

Date:   Monday, 29 November 2021

Time:   4:00pm - 5:00pm

Venue:  Lecture Theater F (Leung Yat Sing Lecture Theater)
        (near lift 25/26, HKUST)

Zoom link:

Meeting ID:     955 3204 9042
Passcode:       CSE

**Note to CSE PGs with NIHK status, please attend the seminar via zoom**


Modularity is a key concern in programming. However, programming languages
remain limited in terms of modularity and extensibility. Small canonical
problems, such as the Expression Problem (EP), illustrate some of the
basic issues: the dilemma between choosing one kind of extensibility over
another one in most programming languages. Other problems, such as how to
express dependencies in a modular way, add up to the basic issues and
remain a significant challenge.

In this seminar, I will present a new statically typed modular programming
style called Compositional Programming. In Compositional Programming,
there is no EP: it is easy to get extensibility in multiple dimensions
(i.e. it is easy to add new variants as well as new operations).
Compositional Programming offers an alternative way to model data
structures that differs from both algebraic datatypes in functional
programming and conventional OOP class hierarchies. We introduce four key
concepts for Compositional Programming: compositional interfaces,
compositional traits, method patterns, and nested trait composition.
Altogether these concepts allow us to naturally solve challenges such as
the Expression Problem, model attribute-grammar-like programs, and
generally deal with modular programs with complex dependencies. We present
a language design, called CP, which is proved to be type-safe, together
with several examples and three case studies.


Dr. Bruno Oliveira is an Associate Professor at the University of Hong
Kong. His research interests are centered around programming languages.
His current research is mainly focused on type systems for modularity and
the combination of Object-Oriented and Functional Paradigms.