Computers are becoming increasingly competent at manipulating, understanding, and producing natural language, and language-like products. Systems that can produce and analyse language with near-human competence are becoming widely available, and progress is very rapid. This course introduces natural language processing (NLP), a key component of artificial intelligence (AI). We delve into cutting-edge NLP techniques and explore their applications in spoken and written language, as well as in specific domain languages. This course describes how we achieved modern capabilities for text understanding and generation, large language models, speech transcription and understanding, question answering, knowledge representation and reasoning, and so on. The course approaches these techniques and aims to equip students to contribute to the application of and enhancement of the state of the art in computer processing and the production of speech, text, and other symbolic representations of knowledge.