The course objective is to provide an introduction to the algorithms, techniques and software used in natural language processing (NLP). Their use will be illustrated by reference to existing applications, particularly speech understanding, information retrieval, information extraction and language generation. The course will try to make clear both the capabilities and the limitations of these applications. In real-world applications, NLP draws heavily on work in computational linguistics and artificial intelligence.