Course description: This course is for students interested in learning the power of programming with logic, especially high-level logic rules, efficient implementations, and diverse applications.
We will study logic languages as tools for expressing knowledge and queries, as well as solution strategies, for complex application problems, and study 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, including for explainable AI.
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 among languages, the reasons for them, and the implications of them in applications.
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 | Official course information
Instructor: Annie Liu | Office: New CS 237 | Phone: 631-632-8463 | Email: liu@cs.stonybrook.edu | Office hours: Mon 4:20-5 PM, Tue 11:20-12 PM, Thu 11:20-11:40 AM, 2-3 PM, or email for an appointment.
TA: Geoffrey Churchill | TA Office: CS 2126 | Email: Geoffrey.Churchill@stonybrook.edu | Office hours: Wed 1-3 PM, Fri 12-1 PM.
Lectures: Tue Thu 10-11:20 AM, New CS 120.
Textbook: There is no required textbook for this course; best relevant book chapters, lecture notes, and/or slides will be given under resources as the course proceeds.
Grading: Lecture critiques: 5% | Lecture notes: 10% | In-class exercises: 10% | Assignments: 10% | 2 Quizzes: 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 quizzes Unit 1: Overview and preparation - 2 weeks (1/23-) An overview of the course, and a brief review of logic in imperative programming, database programming, and functional programming. This will especially include programming with sets, relations, and predicate logic; programming with recursive functions; and a systematic method for algorithm design and program optimization. Tue 1/30 Project problem interest due Tue 2/6 Project problem interest update due Unit 2: Programming with logic - 6 weeks (2/6-) Programming with logic rules and constraints, including key features of logic languages and main methods of their implementations. This will study programming in a wide variety of logic languages: (1) Datalog, the core of logic rules; (2) Prolog and answer-set programming (ASP), two main families of logic languages; and (3) languages supporting combined, more advanced, and/or more specialized features. We will also discuss constraint programming (CP) and mathematical programming (MP) that are closely related to logic programming (LP). The study will include how programs in these languages work: bottom-up inference starting from given facts, top-down search driven/directed by the queries/goals, grounding, backtracking, backjumping, tabling, indexing, and demand transformation. We will also see how some logic languages and systems support multiple paradigms/models of programming and problem solving. For example, Prolog supports logic programming as well as relational programming, recursive programming, and procedural programming; and ErgoAI supports also objects and transactional updates. Tue 2/6 Assignment 1 Fri 2/23 Assignment 1 due Fri 2/23 Assignment 2 Fri 3/8 Assignment 2 due Sun 3/10 Project design and test program due 3/11-17 Spring break week Tue 3/19 Quiz 1 preparation Thu 3/21 Quiz 1, in class Unit 3: Computing with logic at large - 5 weeks (3/26-) Computing with logic and probability, for knowledge representation, reasoning, and learning. This will include (1) knowledge representation using circuits and rules extended with probabilities and/or weights; (2) efficient inference with optimized decision diagrams; (3) and learning of the circuit structures and parameters/weights as well as learning of rules. We will also see how logic with probability provides a rigorous foundation for explainable AI, with efficient and exact inference for a wide range of complex reasoning and learning tasks. Fri 4/19 Project prototype due Thu 4/25 Quiz 2 Unit 4: Review and outlook - 1 week (4/30-) Revisiting the challenges of programming with logic rules and queries for konwledge representation, reasoning, and learning, and envisioning what's to come. This will include a unified, simple, yet more powerful logic rule language for ease of use by everyday users. Fri 5/3 Project due Tue 5/7 Project presentations, during final exam time 8-10:45 AM
Google Classroom for this course, for students in the course
Follow all information in the Google Classroom for this course.
Attend all 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 all 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 basic 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 quizzes 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
Submission issues
Grading issues
University Policies
Computer Science Department Policies and Procedures Governing Graduate Academic Dishonesty