Course Description

Natural language processing (NLP) is one of the most important technologies of the information age. Understanding complex language utterances is also a crucial part of artificial intelligence. Applications of NLP are everywhere because people communicate most everything in language: web search, advertisement, emails, customer service, language translation, radiology reports, etc. There are a large variety of underlying tasks and machine learning models behind NLP applications. Recently, deep learning approaches have obtained very high performance across many different NLP tasks. These can solve tasks with single end-to-end models and do not require traditional, task-specific feature engineering. In this winter quarter course students will learn to implement, train, debug, visualize and invent their own neural network models. The course provides a thorough introduction to cutting-edge research in deep learning applied to NLP. On the model side we will cover word vector representations, window-based neural networks, recurrent neural networks, long-short-term-memory models, recursive neural networks, convolutional neural networks as well as some recent models involving a memory component. Through lectures and programming assignments students will learn the necessary engineering tricks for making neural networks work on practical problems.

This course is a merger of Stanford's previous cs224n course (Natural Language Processing) and cs224d (Deep Learning for Natural Language Processing).

Class Time and Location

Winter quarter (January - March, 2018)
Lecture: Tuesday, Thursday 4:30-5:50
Location: NVIDIA Auditorium

Grading Policy

See the Grading Page for more details on grading.

Assignment Details

See the Assignments Page for more details on how to hand in your assignments.

Final Project Details

See the Project Page for more details on the final project.

Useful Reference Texts

  • Dan Jurafsky and James H. Martin. Speech and Language Processing (3rd ed. draft) [link]
  • Yoav Goldberg. A Primer on Neural Network Models for Natural Language Processing [link]
  • Ian Goodfellow, Yoshua Bengio, and Aaron Courville. Deep Learning. MIT Press. [link]


  • Proficiency in Python
    All class assignments will be in Python (using numpy and tensorflow). There is a tutorial here for those who aren't as familiar with Python. If you have a lot of programming experience but in a different language (e.g. C/C++/Matlab/Javascript) you will probably be fine.
  • College Calculus, Linear Algebra (e.g. MATH 51, CME 100)
    You should be comfortable taking derivatives and understanding matrix vector operations and notation.
  • Basic Probability and Statistics (e.g. CS 109 or other stats course)
    You should know basics of probabilities, gaussian distributions, mean, standard deviation, etc.
  • Foundations of Machine Learning
    We will be formulating cost functions, taking derivatives and performing optimization with gradient descent. Either cs221 or cs229 cover this background. Some optimization tricks will be more intuitive with some knowledge of convex optimization.


Can I follow along from the outside?
We'd be happy if you join us! We plan to make the course materials widely available: The assignments, course notes and slides will be available online. However, we won't be able to give you course credit.
Are the lecture videos publicly available online?
Update as of July 2018: Though we hoped to make the 2018 lecture videos publicly available, unfortunately we were unable to secure permission to do so. However, you can watch the 2017 lecture videos on YouTube, and we are actively trying to arrange to make the 2019 videos publicly available.
Can I take this course on credit/no cred basis?
Yes. Credit will be given to those who would have otherwise earned a C- or above.
Can I audit or sit in?
In general we are very open to sitting-in guests if you are a member of the Stanford community (registered student, staff, and/or faculty). Out of courtesy, we would appreciate that you first email us or talk to the instructor after the first class you attend. Due to high enrollment, we cannot grade the assignments or final projects of any students who are not officially enrolled in the class.
Can I work in groups for the Final Project?
Yes, in groups of up to three people.
I have a question about the class. What is the best way to reach the course staff?
Stanford students please use an internal class forum on Piazza so that other students may benefit from your questions and our answers. If you have a personal matter, email us at the class mailing list
As an SCPD student, how do I make up for poster presentation component?
For the final poster presentation you can submit a video via youtube about your project.
As an SCPD student, how do I take the midterm?
For the midterm, we can use standard SCPD procedures of having your manager or somebody at your company monitor you during the exam.
Will there be virtual office hours for SCPD students
All office hours will be accesible on google hangouts. The link to the hangout is available on piazza