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.

Readings: Many of our readings will come from the forthcoming 3rd edition of Jurafsky and Martin's Speech and Language Processing textbook. You can find PDFs of many chapters on that website. The 2nd edition used to be a required text for this class, and you may still find it useful (you may also want to check the errata pages). There are two copies of the 2nd edition on reserve at Grainger for this class. Required readings are listed on the Syllabus page along with the slides for each lecture.

Target audience and prerequisites: Advanced undergraduates and graduates with a background in formal language and automata theory (CS374 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.