This course introduces students to the fundamental concepts and ideas in natural language processing (NLP), and gets them up to speed with current research. Students develop an in-depth understanding of both the algorithms available for the processing of linguistic information and the underlying computational properties of natural languages. The focus is on modern quantitative techniques in NLP: using large corpora, statistical models for acquisition, disambiguation, and parsing. Word-level, syntactic, and semantic processing from both a linguistic and an algorithmic perspective are considered. Students also examine and constructs representative systems.