This book is based on a course given to second-year computer science undergraduates at the University of Sussex in the spring of 1988 and 1989. It offers an elementary introduction to the semantics of programming languages in a form which is designed to be accessible to students who are not very advanced in their undergraduate career.