This course surveys core algorithms and methods for building computational models of natural language understanding. Topics include syntactic analysis, semantic representation, discourse, and statistical/corpus-based approaches. Applications considered include information extraction, question answering, machine translation, and spoken language understanding. The course also discusses cognitive and linguistic aspects of understanding, emphasizing both theory and practice.