Johns Hopkins Computer Science Home
Johns Hopkins University The Whiting School of Engineering

Declarative Methods
Prof. Jason Eisner
Course # 600.325/425 - Spring 2009

search tree

Announcements


Basic Course Information

-->
Lectures:MWF 3-4 pm, Hodson 311
Prof: Jason Eisner - (image of email address) ((image of email address))
TA: John Blatz - (image of email address) ((image of email address))
CA: Emily DiDonato - (image of email
       address) ((image of email
       address))
Office hrs: For Prof: MW 4pm after class; or by appt in CSEB 324C
For TA: Th 9:30-12:30, or by appt, in CSEB 225
For CA: Tu 3-4, Th 4-5:30, in CSEB 226F
Mailing list: (image of email address) ... public questions, discussion, announcements
Web page:http://cs.jhu.edu/~jason/325
Textbook: None, as I don't know of any other courses like this one. Suggestions welcome. I may assign some readings.
Computer accounts: You will need an account on the CS undergrad machines (ugrad1-ugrad18, etc.). That is where the software will be installed, and where your work will be tested.
It's okay to work on some other machine where you have installed the software yourself -- but you must make sure your code runs on the ugrad machines before you hand it in.
Policies: Academic integrity: read this! It says your work must be your own, etc.
Homework submission procedure: TBA
Lateness: floating late days policy
Announcements: Read mailing list and this page!
Requirements and grading:

For 600.325 students: 10% class participation, 45% assignments, 15% midterm, 30% final.

For 600.425 students: 25% (TBA) for term project, with the rest partitioned as for the 325 students. You might also be assigned extra reading, extra questions, or a class presentation.

Course catalog entry

600.325/425. Declarative Methods (3 credits). Suppose you could simply write down a description of your problem, and let the computer figure out how to solve it. What notation could you use? What strategy should the computer then use? In this survey class, you'll learn to recognize when your problem is a special case of satisfiability, integer programming, rational pattern transduction, Bayesian network inference, or weighted logic programming. For each of these paradigms, you'll learn to reformulate hard problems in the required notation and apply off-the-shelf software that can solve any problem in that notation -- including many of the problems you'll see in other courses and in the real world. You'll also gain some understanding of the general-purpose algorithms that power the software. [Analysis]

Prereq: 600.226, 600.271, Calc II. Students can only receive credit for 600.325 or 600.425, not both.

Another perspective on what this course is about

You could regard this as an alternative programming course. A programming course teaches you how to use a programming language to solve problems. It also outlines how your computer will actually execute the code you write in that programming language.

The languages we'll be using aren't conventional programming languages. They are powerful problem description languages that focus on special-purpose computation. These languages are declarative. That is, you use them to specify a problem, not a solution. But they are backed up by solvers that do a good job of finding the solution efficiently in most cases. This course will survey some declarative languages and examine the kinds of solvers that people have written for them.

How do these languages relate to conventional ones? Conventional languages help you build arbitrary large systems in a modular way. You can think of a solver as a particular powerful module that handles many problems of a particular sort. To explain your particular problem to the solver, you use a declarative language.


Schedule

This class is in the 3-4:30 time slot, a "flex slot" that is intended to permit either three 50-minute lectures or two 75-minute lectures per week. Usually, we have three 50-minute lectures per week (MWF). However, occasionally I may have to cancel one of the MWF lectures, e.g., for travel. I may therefore ask you to let me make up the time with a couple of 75-minute lectures, for example, on M and W in the week before a canceled class. Thus, please try to keep the entire 3-4:30 slot open, especially on MW, both for the sake of these occasional long lectures and so that you can attend office hours after class.

A typical unit will last two weeks. The first week will cover a particular declarative language. The second week will look at strategies used by modern solvers for that language. Your homework (assigned at the end of the first week) will ask you to program in the language, using specific solver software.

Warning: For future lectures and assignments, the links below take you to last year's versions, which are subject to change.

Week 1: Introduction  (Jan 26, 28, 30)

Weeks 2-3: Satisfiability  (Feb 2, 4, 6; Feb 9, 11, 13)

Weeks 4-5: Constraint Programming  (Feb 16, 18, 20; Feb 23, 25, 27)

Weeks 6-7: Learned Classifiers  (Mar 2, 4, 6; Mar 9, 11)

We eliminated this unit this year (2009), since it overlaps with machine learning and AI courses. We might replace it with a unit on Integer Linear Programming, or Nonlinear Function Optimization, or Graph Search, or ...

Midterm Exam  (Mar 13 Mar 27)

Spring Break  (Mar 16-22)

Project proposals for 600.425 due on Mar 30 Apr 3

Weeks 8-9: Logic Programming  (Mar 23, 25, 27; Mar 30, April 1, 3)

Weeks 10-11: Dynamic Programming  (Apr 6, 8, 10; Apr 13, 15, 17)

Weeks 12-13: Soft Constraints (Apr 20, 22, 24; Apr 27, 39, May 1)

Final Exam  (Wed, May 13, 9-12am)

Term Project  (for 600.425)