The Event Calculus is a model of communicating state machines which is defined in Z. The machines have a number of behavioural states, which can be represented in diagrammatic form, and have data states which can be described with Z data base schemas. Machines change state on the occurrence of an “event”. A diagrammatic notation is used in which each transition may be labelled with an event together with a Z operation schema which describes any change in the machines data state. Communication between machines is modelled by means of shared events, associated with a simultaneous change of state of two or more machines. In this paper the key concepts of the calculus are introduced through tutorial examples based on vending machines. This is followed by a case study of a distributed seat booking system.