Behavioural type systems go beyond data type systems in order to specify, characterize and reason about dynamic aspects of program execution. Behavioural types encompass: session types; contracts (for example in service-oriented systems); typestate; types for analysis of termination, deadlock-freedom, liveness, race-freedom and related properties; intersection types applied to behavioural properties; and other topics. Behavioural types can form a basis for both static analysis and dynamic monitoring. Recent years have seen a rapid increase in research on behavioural types, driven partly by the need to formalize and codify communication structures as computing moves from the data-processing era to the communication era, and partly by the realization that type-theoretic techniques can