CSC 181
Computational Semantics


This course is about computing meaning in natural languages. Unlike traditional (and highly successful) machine learning approaches to natural language processing that depend on statistical techniques and little linguistics theory, we will take an approach that relies on linguistic theory to compute the meaning of statements and questions, with a particular focus later in the course on question-answer systems and on representing dialogs, whether between humans or between humans and computers.

An important benefit of this kind of approach to language is that computational systems can provide good tests of the validity of linguistic theories as well as create useful tools to understand and generate natural language. The course will begin with a quick introduction to mathematical logic and the lambda calculus which will be our primary tools for building a computational understanding of language. Prerequisites: CSCI052 PO or CSCI060 HM.

Every student passing this course should be able to:

  1. Specify the meaning of simple declarative sentences using logic and the lambda calculus.
  2. Determine whether a sentence if true given knowledge of the appropriate facts about the world.
  3. Implement and extend a software system to model natural languages
  4. Understand how to model a discourse system between two humans or a human and a computer.
  5. Be capable of going to the original literature to understand a semantic model of a part of a natural language and to implement it in software.

This course will involve extensive reading on your part, both in the text and in outside sources. While I will provide some instruction in Haskell, the functional language used in this course, you will be expected to master the language on your own.