Course Description

Course Description and Topics

Natural Language Processing (NLP) is a sub-field of Artificial Intelligence that focuses on processing and understanding human languages (e.g. English, German, etc.). In this course, we will go over the basics of this field covering various NLP topics including, but not limited to:

This course is for (junior and senior) undergraduate students and possibly also graduate students of Computer Science. It requires an understanding of the basics of Machine Learning, Linear Algebra, Probability theory, and data structures and algorithms.


Learning Objectives 

Through this course, students will develop an understanding of the general field of Natural Language Processing with emphasis on state-of-the-art solutions for classic NLP problems. Students will learn to dive deep into the working of NLP algorithms, comparing them and understanding their strengths and weaknesses. Students will also do a semester-long course project on a real-world NLP problem, which involves either designing and implementing a new NLP model or implementing existing systems. Through the project and the course, students will learn how to design, implement, and experiment with NLP models. They will also learn to present their work.  


Books

While we won't be following one particular book, I will assign reading materials mostly from the following books: