CS 470/570 Artificial Intelligence, Fall 2016

(As of 2016-08-11)





This course is for advanced undergraduates and graduate students interested in artificial intelligence. The focus this term is on functional programming, and natural-language semantics. The first few weeks will be devoted to learning basic AI in the context of the Scala programming language; future problem sets will involve programming in Scala. No previous experience with Scala is required, but knowledge of Scheme, Haskell, or Java is essential. Scala is a fairly new but well established language that may be described as a hybrid of Haskell and Java.

Instructor: Drew McDermott (Office: AKW (Watson) 508; Ph: 2-1284)

Meets MWF 9:25–10:15. Classroom: WLH 120

Textbook

Speech and Natural Language Processing (Second Edition) by Daniel Jurafsky and James H. Martin. Available at the Yale Bookstore.

At the beginning of the course students learn functional programming in the context of the Scala language. The textbook for this phase is Functional Programming in Scala, by Paul Chiusano and RĂșnar Bjarnason It is available as an e-book, or as a paperback at the Yale Bookstore.

Graduate students: See note at the end about CS570.

Assignments

There will be several (5 or 6) problem sets, plus a midterm and final. (If there are more than 6 or fewer than 5 problem sets, this will not be held to violate the terms of the syllabus.) The midterm will count as 1 problem set, the final as 2; and, for those taking CS570 (see note), the project counts as 2 problem sets.

Topics

Here are the topics I plan to cover:

  1. AI concepts and methods.
  2. Functional programming in Scala
  3. Logic as a knowledge-representation system.
  4. Natural language: that stuff you've been understanding and producing since you were 2 years old.
  5. Grammar and logic; the interface of syntax and semantics. (At least until we understand what's really going on.)
  6. The lambda calculus as a tool for the proper connection between syntax and semantics
  7. The problem of ambiguity, lexical, syntactic, and semantic.
  8. Statistics and natural language: Probailistic grammars
  9. Statistical machine translation (time permitting)

Miscellany

Mathematics: We assume you know what a proof looks like, especially a proof by induction. However, differential calculus is not required.

Note: CS570 vs. CS470: This course is double-numbered, which means that it can be taken as either 570 or 470. Graduate students must take it as 570; undergraduates must take it as 570 if they are enrolled in the combined MS-BS program. Those taking it as 570 must read and discuss extra papers, and complete an extra programming project. We will find a time for a meeting every one or two weeks for these discussions. Near the end of the course CS570 students will give short presentations on their projects.