CS 349: Natural Language Processing

Spring 2016, Wellesley College

Syllabus and Course Policies

Course Objectives

By the end of the class, you should be able to:
  • Comprehend the general formalisms underlying the language technologies you interact with
  • Be able to understand the basis for many research avenues in NLP and machine learning
  • Appreciate the complexity of human language from a computational perspective
  • Apply theory to practice, implementing working NLP programs
  • Innovate to improve the performance of a task or harness language-based data in creative new ways

Course Overview

Lecture material will focus on theoretical models and algorithms, punctuated by discussions of applications. With this foundation, you can then apply the machinery to a range of problems, and explore your own ideas in the final project. Assignments give you the chance to implement the models seen in class to solve concrete tasks in NLP.

See the schedule for a daily breakdown of topics and assignments.

Probabilistic Models:

  • Language Characterization
  • Text Classification
  • The Noisy Channel Model for Prediction

Formal Grammars

Vector Space Models

  • Vector Representations of Language
  • Machine Learning for NLP

Overview of Key NLP Problems

  • Machine Translation
  • Speech Recognition
  • Text Categorization
  • Summarization


There are no required books; all readings will be posted online. Here are two excellent references that cover most of the topics in the class, and more.

  • Foundations of statistical natural language processing, Christopher D. Manning and Hinrich Sch├╝tze. Available as an e-book from the library.
  • Speech and language processing, Daniel Jurafsky and James Martin (2nd edition).

Academic Honesty

Don't cheat.

Usual CS rules apply: you may discuss assignments and brainstorm solutions with one another or the Google Group, or look up materials online and in textbooks to help you understand the material. You are especially encouraged to search for hints on implementing low-level helper functions for your programs, finding out what built-in functions do, or interpreting error messages. However, you may not copy each others' work, share code, or search online for a solution for any of the actual assignment tasks. Help must be acknowledged as a comment in programs, or a note on problem sets. Distribute tasks evenly in partner or group assignments. Be sure to cite or link to related work in your final projects.

Attendance and Class Participation

There are no points in the rubric for class participation but it may boost your final letter grade if you are on the borderline. Missed attendance will translate to losing points on in-class exercises.


Let me know early in the semester if you need classroom accommodations of any form.