CS 6172

CS 6172

Course information provided by the Courses of Study 2021-2022.

An introduction to program synthesis: the problem of automatically generating programs from specifications of their desired behavior. Program synthesis draws on the fields of programming languages and artificial intelligence with the aim of helping to improve software engineering by automatically generating code; help expand the usability of computers by allowing non-coders to harness the power of programming languages; and help us build more interpretable, symbolic AI systems that can write new code. Covers classic areas such as programming-by-example, constraint-based synthesis using SMT solvers, type-directed program synthesis, and inductive logic programming. Covers recent developments in mixed discrete/continuous and neural/symbolic program synthesis. Covers deep learning methods for building efficient, scalable program synthesizers.

When Offered Fall.

Permission Note Enrollment limited to: Ph.D. students.
Prerequisites/Corequisites Prerequisite: students should be comfortable with functional programming, and basic material in AI and ML such as propositional and first-order logic, gradient descent, and probabilistic inference. This is material covered in undergraduate courses such as CS 3110, CS 4700, and CS 4780/CS 5780.

Outcomes
  • Identify where and how program synthesis can be used to solve engineering problems.
  • Be able to build program synthesizers which combine techniques from programming languages and AI.
  • Understand open problems in the field and be equipped to work on them.

View Enrollment Information

Syllabi: none
  •   Regular Academic Session. 

  • 3 Credits Stdnt Opt

  • 18860 CS 6172   LEC 001

  • Instruction Mode: In Person
    Seats are reserved for graduate students. Professional and undergraduate students should add themselves to the waitlist during add/drop. See enrollment page for more details: https://www.cs.cornell.edu/courseinfo/enrollment/cs-6000-level-courses