We present the foundations of the event calculus, a formalism for commonsense reasoning. We review first-order logic and describe some notational conventions. We discuss the basics of the event calculus, and we present two axiomatizations of the event calculus: EC and DEC. We discuss how to choose which axiomatization to use. We present reification, which is needed to represent statements about events and fluents in first-order logic. We discuss unique names axioms, conditions, circumscription, and domain descriptions, and we describe the types of reasoning that can be performed using the event calculus.