Natural language processing (NLP) is a subfield of artificial intelligence concerned with the interactions between computers and human languages. This course is an introduction to NLP, with the emphasis on writing programs to process and analyze text corpora. The course covers both foundational aspects and applications of NLP. The course aims at a balance between classical and statistical methods for NLP, including methods based on machine learning. In this course, students will clean or otherwise pre-process natural language corpora; develop natural language processing tools; integrate existing tools into an analysis task; and apply computational methods to natural language artefacts to extract information, classify the language within the artefact, identify relationships among artefacts, or identify relationships among elements within an artefact. Credit cannot be obtained for both CMPUT 461 and 561.