Semester.ly

Johns Hopkins University | EN.600.325

Declarative Methods

3.0

credits

Average Course Rating

(4.4)

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 an instance of satisfiability, constraint programming, logic programming, dynamic programming, or mathematical programming (e.g., integer linear programming). For each of these related 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 NP-complete problems and 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] Students can only receive credit for EN.600.325 or EN.600.425, not both.

Spring 2013

(4.59)

Spring 2014

(4.22)

Spring 2013

Professor: Jason Eisner

(4.59)

80 The best aspects of this course included the instructor’s engaging lectures and concise explanations of concepts. Also, students appreciated learning to use different techniques to solve NP problems. One student felt that the pace of the course throughout the semester was too rapid. Another student felt that even though there was a session dedicated to helping students understand and solve certain problems, he/she couldn’t attend due to a scheduling conflict and that also, in class, there were not enough people available to help. Suggestions included helping the students better prepare for the exams and making the lectures more interactive. Prospective students should know that basic knowledge of a scripting language like Python or Perl is helpful.

Spring 2014

Professor: Jason Eisner

(4.22)

89 The highlights from this class were the enthusiastic and knowledgeable instructor, the fascinating lectures, and the comprehensive nature of the material presented. The assignments were chal enging and gave good experience in bash scripting. The worst aspects of the course were the heavy writing requirement, the sometimes confusing programming assignment descriptions, and the sheer amount of work. Suggestions to improve the course included assigning a better textbook, better organized assignment descriptions, including Bayesian networks, and additional scaffolding. Prospective students should know this course requires a lot of time and work, but is very interesting and highly recommended.