Introduction to Natural Language Processing

CS 585, Fall 2016, UMass Amherst CS

Instructor: Brendan O'Connor (office hours CS 348, Monday 5-6pm unless announced otherwise)

TAs: Abe Handler (office hours CS 207, Wednesday 12:30 to 2:30) and Haw-Shiuan Chang (office hours CS 207, Thursday 4:00 to 6:00)

Location: Goessmann 20. (That's in C3 on the campus map. Easiest way to get there: enter Goessmann through south entrance that faces campus center.)


Course description

Natural Language Processing (NLP) is the engineering art and science of how to teach computers to understand human language. NLP is a type of artificial intelligence technology, and it's now ubiquitous -- NLP lets us talk to our phones, use the web to answer questions, map out discussions in books and social media, and even translate between human languages. Since language is rich, subtle, ambiguous, and very difficult for computers to understand, these systems can sometimes seem like magic -- but these are engineering problems we can tackle with data, math, machine learning, and insights from linguistics.

This course will introduce NLP methods and applications including probabilistic language models, machine translation, and parsing algorithms for syntax and the deeper meaning of text. During the course, students will (1) learn and derive mathematical models and algorithms for NLP; (2) become familiar with key facts about human language that motivate them, and help practitioners know what problems are possible to solve; and (3) complete a series of hands-on projects to implement, experiment with, and improve NLP models, gaining practical skills for natural language systems engineering.

This course is intended for upper-level CS undergraduates and masters-level graduate students, as well as linguistics students with an appropriate background.

Prerequisites: experience in programming and probability. Undergraduates must have completed:
  ((CS220 or CS230) and CS240) or Ling492B)
This is intended to represent the following requirements:

  1. Programming maturity, including data structures (e.g. knowing how to debug a DFS implementation).
  2. Basic algorithm analysis (e.g. big-O analysis of a graph algorithms).
  3. Basic probability theory (e.g. Bayes Rule).
  4. A genuine interest in language; linguistics background is a huge plus.

Override waitlist

If you need to sign up on the override waitlist, make sure to do it on the CS department's form at: Make sure to carefully describe your reason to take the course.
In the past demand has been high so we will not be able to accomodate everyone who wants to enroll.

See also the fall 2014 and fall 2015 versions of this course.

If you are interested in other courses, see this list of courses in NLP and related areas offered at UMass and nearby.

I will be offering a PhD-level NLP course in Spring 2017 that will have a stronger research focus and more machine learning prerequisites. It will be open to CS and Linguistics PhD students. I do not yet know whether I will be able to admit other students.


The suggested textbook is Jurafsky and Martin, Speech and Language Processing, 2nd ed. We will also draw readings from J+M's 3rd edition textbook. (We will post all readings as PDFs.)

Other useful texts for NLP include:

Courses elsewehre

Georgetown, Stanford, Johns Hopkins, Georgia Tech, U Texas, Berkeley, Coursera now discontinued?, etc.