This course focuses on the computational treatment of meaning in natural language. We will review perspectives on meaning based on truth and those based on use, and explore the issues which arise for computational systems of each, including representations and algorithms. Specific topics we will cover include the use of first-order logic and the lambda calculus in formal models, functors and applicative functors for semantic interpretation across different possible situations, monads and continuations for representing linguistic context, and statistical and machine learning methods for modeling the distributions of words. This is new.

Course Prerequisite(s)

COSI 10A or COSI 12b or equivalent (introductory-level programming or higher, does not have to be in Python or Java), and COSI 121b (functional programming, does not have to be in Scheme) or LING 130a (semantics), or permission of the instructor. If you do not meet the criteria listed above but are still interested in the course, you are encouraged to talk to us, to see if we can make the course work for you.

Learning Goals

Upon completion of the course, students will be able to:

  • appreciate the different ways one can represent and compute meaning in natural language,
  • implement these computational systems using tools from functional programming and machine learning,
  • read, understand, and communicate effectively about contemporary work in computational semantics, and
  • integrate the above knowledge and skills in the form of a final project.

Credit Hours

Success in this four-credit course is based on the expectation that students will spend a minimum of nine hours of study time per week in preparation for class (readings, assignments, etc.).