Lecture One: The basic idea of model theory. One can distinguish structures by what formal sentences are true in them. We look at examples of some of the main kinds of formal sentence, not only from first-order logic.
Lecture Two: The classical indistinguishability theorems. These theorems tell us that certain kinds of formal language are incapable of making certain kinds of distinction. Compactness, Loewenheim-Skolem and preservation theorems (such as Birkhoff's) are examples.
Lecture Three: Games for comparing structures. These are the Ehrenfeucht-Fraisse games and their descendents. We can use them to measure how different two given structures are, and hence how easy it will be to distinguish between them by formal sentences.
Lecture Four: Ways of cheating. We look at some ways of using weak languages to make strong distinctions. For example Prolog, logically a rather weak language, is in fact a universal programming language; how?