This course is an introduction to computational linguistics, the study of natural language from a computational perspective. Computational linguistics encompasses both applied (engineering) and theoretical (cognitive) issues, and in this course you will be introduced to both. You will learn how to write programs to automatically process and analyze linguistic structure in language corpora. You will learn how formal language models (grammars) can be implemented computationally and used to represent linguistic structure at various levels.