This is an introduction to fundamental topics in natural language processing. As a self-contained linguistically-oriented course book, the aim is to provide the student with the basic skills to build a rudimentary natural language interface to a database, and includes sections on syntactic analysis and representation, parsing, model theoretic semantics, ambiguity, pragmatics, and relationships to artificial intelligence. The introdution covers the Prolog programming language, and is illustrated with programs written in the Prolog programming language,.