Topics: This course provides an introduction to computational linguistics, from morphology (word formation) and syntax (sentence structure) to semantics (meaning), and natural language processing applications such as parsing, machine translation, generation and dialog systems.

Objectives: At the end of this course, students should have a good understanding of the research questions and methods used in different areas of natural language processing. Students should also be able to use this knowledge to implement simple natural language processing algorithms and applications. Students who take this course for 4 hours credit should also be able to understand and evaluate original research papers in natural language processing that build on and go beyond the textbook material covered in class.

Textbook: Jurafsky and Martin (2008), Speech and Language Processing, 2nd edition. This is a required text. All assigned readings are from this book, unless indicated otherwise. Make sure to get the second edition, since it is significantly different from the first one! (And do check the errata pages). There will be two copies on reserve at Grainger for this class. We will also draw some readings from the 3rd edition , which is still in preparation, although the website has a number of new and/or rewritten chapters available as PDFs.

Target audience and prerequisites: Advanced undergraduates and graduates with a background in formal language and automata theory (CS273 or equivalent). Programming experience is necessary for the assignments. The required programming language for all assignments is Python 3.5. Prior exposure to linguistics is not required.