Provides an introduction to finite model theory which stresses the computer science origins of the area. This book deals with the applications in databases, complexity theory, and formal languages, as well as other branches of computer science. It covers Ehrenfeucht-Fraisse games, locality-based techniques, and the complexity analysis of logics.