Introductory courses in modern NLP

If you are new to Natural Language Processing, and you’re looking to start learning, welcome! There’s no better time to start learning about this diverse field.

Because it’s so diverse, you’ll encounter multiple ways to learn it. Here are a few different starting points. You’ll do well with any of them, so choose one that most aligns with your interests.


The first broad category is what I’ll call Traditional NLP. This is any NLP methods that were in fashion before this decade.

Coursera used to have 2 good ones for traditional NLP: one taught by Prof. Michael Collins, another by Prof. Drago Radev. Both courses have been removed from Coursera but still available in other places. I’ll link them below.

Prof. Collins’s course was more based in statistical modeling. If you are interested in machine learning techniques and statistical methods of solving problems, I recommend starting here. It’s the most mathematically rigorous approach that I’ll mention in this post. Here’s a download of all the lectures.

Prof. Radev’s course had a slight linguistics slant to it but was still based in statistical methods. The in-person version of this course at University of Michigan was my first introduction to NLP, so I’m partial to it. Here’s a Youtube playlist of his lectures.


For modern NLP, Stanford’s CS224d, a grad-level deep learning course, is a good introduction. These are the lectures for this course.

A more updated version of the above is Stanford’s CS224n, for which you’ll find the lectures in this Youtube playlist.

However, it requires you to already be comfortable with Machine Learning. For that, there’s still no better introduction than Prof. Andrew Ng’s ML Coursera course.

A lot of modern NLP relies on sequence modeling, and Coursera has a Sequence Models course you could try. I haven’t tried this one, so I can’t vouch for it. It might be worth your time.


Finally, if you don’t want to take online courses, you could jump directly into a Kaggle competition.

You could start playing with an NLP library like spaCy and nltk and try to pick up concepts along the way.

Regardless of the method you choose, you’ll be served well by sharpening your Python skills. If it’s been a while since you’ve coded in Python, I recommend this website, Learn X in Y minutes. It’s a good reference to keep open in a tab while you’re coding.

Happy learning!