Course Code: CS323
Course Name: Introduction to Natural Language Processing
Prerequisites: None.
Syllabus: Preamble / Objectives: Primary aim of the course is to introduce learners with essentials of natural language processing. The essentials cover linguistic aspects, core algorithms for solving basic tasks, statistical and shallow machine learning models for several natural language processing tasks.

Introduction: Different levels of NLP; Text Normalization: Basic pre-processing, Word and sentence segmentation, Lemmatization, Stemming, Morphology; Language Models: n-gram models, smoothing techniques; Sequence Learning Tasks and Models: Examples of NLP tasks, Statistical Models - HMM, MEMM, CRF; Syntactic Parsing: Regular and Context-Free Languages, Context-Free Parsing, CKY Algorithm; Dependency Parsing: Dependency Grammar, Graph-based dependency parsing, Transition-based dependency parsing; Vector-space Models: Word and Meanings, Distributional and Distributed Semantics, Lexical Semantic Analysis, GloVe, word2vec; Reference Resolution; Applications
References: 1. D. Jurafsky, J.H. Martin, Speech and Language Processing, 3rd Online Edition (available at https://web.stanford.edu/~jurafsky/slp3/).
2. J. Eisenstein, Introduction to Natural Language Processing, MIT Press, 2019.