CSE 599F1 - Constraint Languages

Syllabus

Overview

A constraint represents a relation that should be satisfied: for example, that p1+p2=p3 for points p1, p2, and p3; that a text box be centered at the bottom of a window; or that a resistor in a circuit simulation obey Ohm's Law. Constraints are typically multi-directional (i.e., we can solve for any or all of p1, p2, or p3), and solved and maintained automatically. A constraint programming language embeds constraints at the language level. In this special topics course, we'll study, work with, and perhaps develop constraint languages. The work will include a course project, which can be either individual or done in groups of 2-3. The project might be developing a non-trivial application in a constraint language, extending or even developing a new language, or presenting and analyzing a set of papers from the literature. The first part of the course will consist of lectures, some exercises including writing some small programs in various languages, and helping identify course projects and groups. We will then move to a combination of discussing current and historical papers, and project discussions. Students will be expected to present (or help present) 2 or so papers -- the exact number will depend on enrollment.

The prerequisites are CSE 341 or equivalent, being comfortable reading programming language papers that include a certain amount of formalism, picking up new languages, and (recommended but not required) CSE 505. To help keep the class as participatory as possible, no auditors please.

Grading

Here is the approximate weighting for the different parts of the work for the course. There will be no midterm or final, but please hold the final exam slot (March 13, 2:30-4:20) for final project presentations.

Reserve Books

Most of the resources needed for the course will be available online. In addition, the following book is on reserve in the Engineering Library. (Alan has a copy as well that you can borrow.) Alan also has a copy of the following book, which you are welcome to borrow.