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

Declarative Methods
Prof. Jason Eisner
Course # 601.432/632 - Spring 2026

search tree

Announcements


Key Links


Schedule

Format: 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: The schedule may change. Future lectures (and homeworks) may also change, especially for topics later in the course. .

Week 1: Introduction  (Jan 20, 22, 26)

Weeks 2-3: Satisfiability  (Jan 28, 30, Feb 2; Feb 4, 6, 9)

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

Project proposals due on Feb 27

Weeks 6-7: Logic Programming  (Feb 25, 27, Mar 2; Mar 4, 6, 9)

Midterm Exam  (Mar 11)

Catch-Up or Get-Ahead Day  (Mar 13)

Spring Break  (Mar 14-22)

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

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

Week 12: Formalizing Mathematics and Computation (Apr 20, 22, 24, 27)

Term Project

Final Exam  (Tue, May 5, 9am-noon)


Recitation Materials


Old Materials

Here are some materials that we covered in past years but will probably omit this year.

Soft Constraints

(In probabilistic modeling frameworks like Markov Random Fields and probabilistic programming languages, fundamental problems like Most Probable Explanation correspond to weighted MAX-SAT, while fundamental problems like marginal inference and partition function computation correspond to #SAT. Similar techniques are often employed: systematic and stochastic search, propagation, LP relaxation, etc.)

Satisfiability Modulo Theories

(Ken Roe gave a guest lecture on this topic in 2013.)

Linear Classifiers

(This topic is now covered well in 601.475/675 Machine Learning and elsewhere.)