CSE505 (Spring 2025)
Computing with Logic

General Information | Schedule | Resources | Requirements

General Information

Course description: This course is for students interested in programming with logic, especially powerful logic languages, efficient implementations, and diverse applications (exactly those that LLMs cannot do). Official course information

Student will learn logic languages as tools for expressing knowledge and queries, as well as solution strategies, for complex application problems, and will learn systems that implement these languages for efficiently solving the problems. We will also discuss computing with logic at large for reasoning and learning with uncertainty, supporting explainable AI, and for theorem proving, program verification, and distributed programming.

The course will touch on a variety of powerful languages and systems. Rather than dwell on the features of any particular language, we will focus instead on understanding the commonalities and differences, the reasons for them, and the implications of them in applications.

Students will do programming assignments and a course project involving knowledge representation and reasoning.

Prerequisites: Undergraduate discrete math with good analytical experience (predicate logic, sets, functions, relations, probability) plus good experience with commonly-used programming languages and algorithms. | Credits: 3

Instructor: Annie Liu | Office: New CS 237 | Phone: 631-632-8463 | Email: liu@cs.stonybrook.edu | Office hours: Mon 10:20-11 AM, 12:20-1 PM, Wed 2-2:40 PM, Thu 4:20-5 PM, or email for an appointment.

Lectures: Mon Wed 11 AM - 12:20 PM, CS 2311.

Textbook: There is no required textbook for this course; best relevant book chapters, other references, and slides will be given as the course proceeds.

Grading: Lecture critiques: 5% | In-class exercises: 10% | Assignments: 20% | 2 Exams: 2 x 15% | Course project: 35% | No late submission will receive credit.

Course homepage: http://www.cs.stonybrook.edu/~liu/cse505/


Schedule

14 weeks total for 4 units, including 2 exams

Unit 1: Overview and preparation - 2 weeks (1/27-)

  An overview of the course (with logic puzzles and advanced applications);
  and a brief review of logic in database programming (with sets and
  relations) and functional programming (with recursive functions).

  We will introduce a simple unified view of logic in programming and the
  essence of a powerful method for generating efficient algorithms and programs.

    Mon 2/3  Project problem interest due
    Mon 2/10 Project problem interest update due


Unit 2: Programming with logic - 6 weeks (2/10-)

  Programming with logic rules and constraints, including key language
  features and main implementation methods.

  We will study programming in powerful logic languages: (1) Datalog, the
  core of logic rules; (2) Prolog and answer-set programming (ASP), two
  main classes; (3) languages with combined, advanced, or specialized
  features.  We will discuss constraint programming (CP) and mathematical
  programming (MP) that are closely related to logic programming (LP).

  We will study efficient implementations: bottom-up inference starting
  from given facts, top-down search directed by queries/goals, grounding,
  backtracking, backjumping, tabling, indexing, and demand transformation.

  We will see how languages can support diverse programming models: logic,
  relational, recursive, procedural, objects, transactional updates, and more.

    Mon 2/10 Assignment 1
    Fri 2/28 Assignment 1 due

    Fri 2/28 Assignment 2
    Fri 3/14 Assignment 2 due

    Fri 3/14 Assignment 3
    Fri 3/28 Assignment 3 due

        3/17-21 Spring break week

    Mon 3/24 Exam 1 preparation
    Wed 3/26 Exam 1, in class


Unit 3: Computing with logic at large - 5 weeks (3/31-)

  This will include logic and probability supporting explainable AI: (1)
  knowledge representation using circuits and rules extended with
  probabilities or weights; (2) efficient inference with decision diagrams
  and SAT solving; (3) learning of circuit structures and weights and
  learning of rules.

  We will also discuss languages and systems supporting theorem proving,
  program verification, and distributed programming.

    Fri 4/11 Assignment 4
    Fri 4/25 Assignment 4 due

    Fri 4/18 Project design and test program (with prototype skeleton) due

    Mon 4/28 Exam 2 preparation
    Wed 4/30 Exam 2


Unit 4: Review and outlook - 1 week (5/5-)

  Review of a unified view of logic in programming, efficient
  implementations, and combining logical and statistical reasoning for
  advanced applications.

    Fri 5/9 Project due
    Wed 5/14 Project presentations, 2-4PM

Resources

Google Classroom for this course, for students in the course


Requirements

Follow information in the Google Classroom for this course.

Attend lectures and take good notes. This is the most efficient way to learn the course materials, because we will both distill and elaborate written materials and discuss important related materials. We will start promptly on time. We will have every student participate in solving problems and presenting solutions in class.

Do course work. The readings are to help you preview and review the materials discussed in the lectures. The assignments and project are to provide concrete experiences with the concepts and methods covered in the lectures. The exercises are to help check that you are keeping up with the lectures and the assignments. The exams will be comprehensive.

If you have any questions, ask. Ask questions in class, in office hours, and in the Q&A group. Talk with your classmates, and share ideas, but not solutions to assignments.

Your submitted work

Your handins must include the following information at the top: your name, student id, course number, assignment number, and due date, and must be submitted in a neat and organized fashion.

Your programming solutions must be submitted with a README.txt file explaining where things are, what you did and found for the assignment (that is not described in the assignment handout), and how to run and test your program. This file is worth a non-trivial portion of the grade.

Your approach to solving problems is as important as your final solutions; you need to show how you arrived at your solutions and include appropriate explanations. Always include good explanations in your README file and good comments in your code.

Your assignment and project submissions must be your own work. You are not permitted to share, borrow, or even look at another student's work while completing your own assignment. Likewise, copying material from any source other than what is specified by the instructor will constitute cheating. You may discuss ideas with others and look up references, but you must write up your solutions independently and credit all sources that you used. Any evidence that answers have been copied, shared, or transmitted in any way, including the use of answers downloaded from the Internet or written by others previously, will be regarded as evidence of academic dishonesty. Anyone involved will be reported.

Submission issues

Neither extensions nor late submissions will be approved under normal circumstances. If some emergency or other circumstances truly beyond your control prevent you from submitting your assignment on time, supply the instructor with suitable documentation and notification prior to the assignment deadline. The instructor will also refer you to the Dean of Students for follow-up consultation.

Students are urged to plan ahead to avoid problems such as computer failures at the last minute. If your assignment is incomplete before it is due, turn in whatever you have. You are advised to budget your time wisely and to start working on an assignment the day it is posted.

Grading issues

The final grade you receive in this class will reflect, as far as possible, the extent to which you have mastered the concepts and their applications. How much someone needs a grade, or how close they are to the next higher grade, will have no effect on grade. As the instructor, I want everyone to do well in this course, and will make every reasonable effort to help you understand the material taught. However, the grades provided at the end of the semester are final, except for rare situations involving grading errors. They will not be altered for other reasons, so please do not ask me to do so.

If you think you found grading errors, please arrange a re-grading within one week of receiving the graded work; later requests will not be entertained.

To promote consistency of grading, issues about work graded by a TA should be addressed first to the TA and then, if the issues are not resolved, to the instructor.

University Policies

Academic Integrity

Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty is required to report any suspected instances of academic dishonesty to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty please refer to the academic judiciary website at http://www.stonybrook.edu/commcms/academic_integrity/index.html

Student Accessibility Support Center

If you have a physical, psychological, medical, or learning disability that may impact your course work, please contact the Student Accessibility Support Center, Stony Brook Union Suite 107, (631) 632-6748, or at sasc@stonybrook.edu. They will determine with you what accommodations are necessary and appropriate. All information and documentation is confidential.

Students who require assistance during emergency evacuation are encouraged to discuss their needs with their professors and the Student Accessibility Support Center. For procedures and information go to the following website: https://ehs.stonybrook.edu/programs/fire-safety/emergency-evacuation/evacuation-guide-disabilities and search Fire Safety and Evacuation and Disabilities.

Critical Incident Management

Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Student Conduct and Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.

Computer Science Department Policies and Procedures Governing Graduate Academic Dishonesty
Annie Liu