Syllabus

Instructor Details

Instructor: Sankha Narayan Guria

Lectures: Monday, Wednesday, and Friday, 3:00 - 3:50pm, LEEP2 G411

Office Hours: Monday 4:00 - 5:00pm, Eaton Hall 2034

Email: [email protected]

Please email if standard office hours times do not work for you.

Course Hours

Credit Hours: 3

A credit hour is a way to measure the amount of work you’re expected to do for a class. It’s based on the learning goals of the course and how much time you’ll spend on it. During a full length (15-week) semester, you can expect to spend about one hour in class and another two hours on homework or studying each week for each credit hour.

Instructional Methods

In Person. Some classes may be scheduled on Zoom in unforeseen circumstances.

Course Description

EECS 700: Introduction to Program Synthesis is a comprehensive introduction to automatic programming or program synthesis, an emerging area that sits at the intersection of programming languages, automated reasoning, and artificial intelligence. Program synthesis aims to generate programs automatically from high-level, possibly incomplete descriptions. The course covers a wide variety of recent synthesis techniques that differ in the kind of descriptions they start with tests and input-output examples to formal correctness specifications. It will also cover the search strategies synthesis tools use like enumeration, symbolic execution, type systems, stochastic search, and machine learning.

Learning Outcomes

At the conclusion of this course, students will be able to:

  • Enumerative Program Search and Pruning
  • Stochastic and Representation-based Search
  • Constraint Solving
  • Type-directed Synthesis
  • Abstraction-based Synthesis
  • Machine learning based Synthesis
  • Reading and reviewing relevant research papers
  • Build/use a program synthesis tool from scratch

Course Materials

All materials are available as publicly available research papers linked from the course schedule.

Minimal Technical Skills Needed

You must be proficient in programming and knowledge of programming languages design and implementation. EECS 662 gives relevant background for this class. While the class is strongly recommended, it is not required.

Course Assignments and Requirements

  • Paper reviews: 45%
    • 9 papers, 5% each
  • Final Project: 50%
    • Team formed by deadline: 5%
    • Project Proposal: 15%
    • Project Presentation: 15%
    • Final Report: 15%
  • Class Particpation: 5%

Paper Reviews

Most work in the class requires reading and reviewing research papers. We will cover about one paper per week. For each paper, you are required to write a review.

The key things your review requires (unless noted by specific questions on the assignment):

  • 1-2 paragraph summary of the paper and their key contributions
  • What is your opinion of the paper (criticisms, limitations, things you liked, potential improvements, strengths, weaknesses according to you)
  • Feel free to puts questions you have after reading the paper in your summary too

We will discuss the key questions in the class for each paper. The goal of the writing the summary is to get you to think deeply about the paper, not to test you. You will not be graded on the correctness of your reviews; any non-trivial review will get you points.

Final Project

The goal of the final project is to gain an in-depth understanding of the materials presented in the course by re-implementing them, applying them to new domains, or extending them. I will share a list of possible project topics. You can also suggest your own project ideas. You project topics are required to be approved by the instructor before you start working on them. If you are already working on a research project that fits the theme of the class, you can use that as your final project (provided you meet all the course deliverables). If you are taking any other class and want to work on synthesis for that domain, feel free to propose such project ideas.

The project will have the following milestones:

  1. Form and register your project group with 2-3 students.
  2. Project Proposal: One page document with 3 sections:
    • What you plan to do and why it is a good idea. The project should be well scoped.
    • Give concrete example(s) about what kind of synthesis problem will be solved, i.e. what are the input/outputs for the synthesizer
    • Broad idea of the algorithm/tools your synthesizer will use to transform the provided synthesis problem to the desired program. Give 1-2 sentences about your plans for evaluating your project.
  3. A short presentation describing your project.
  4. A final report describing your project between 5-8 pages of length. The report should read like a short paper, so describe what you did with examples, you algorithm, your design decisions, and link to your code repository on GitHub. This should be similar in-spirit to the papers you read in class.

The projects will be judged on scope, quality of execution, and originality.

Class Participation

To earn participation points, participate in discussions and ask questions during lectures and online on Canvas Discussions.

Student Survey of Teaching

You will have multiple opportunities to provide feedback on your experience in this course. Suggestions and constructive criticism are encouraged throughout the course and may be particularly valuable early in the semester. To that end, I may use surveys and/or reflection assignments to gather input on what is working well and what could be improved. You will also be asked to complete an end-of-semester, online Student Survey of Teaching, which could inform modifications to this course (and other courses that I teach) in the future.

Grading

  • A: 90 - 100%
  • B: 80 - 90%
  • C: 70 - 80%
  • D: 60 - 70%
  • F: Below 60%

I do not use the +/- grading scale.

Attendance Policy

All course material (research papers and lecture slides) will be shared online after class. I do not take attendance. You are however, expected and encouraged to attend and participate in class. There is 5% points for class participation. If you have any problems which will cause you to miss a class or an assignment deadline please email me.

The University Excused Absence Policy is a good reference for allowed reasons.

Subject to Change Statement

The schedule for the class beyond next week is subject to change. Please consult the course website to know the latest version of the schedule and syllabus. Any changes in assignments and syllabus policies will conveyed via Canvas announcements.

Student Resources and University Policies

Please visit the Student Resources website (KU Academic Success) for a list of student resources and university policies.

Accommodation

The Student Access Center (SAC) coordinates academic accommodations and services for all eligible KU students with disabilities. If you have a disability for which you wish to request accommodations and have not contacted SAC, please do so as soon as possible. They are located in 22 Strong Hall and can be reached at 785-864-4064 (V/TTY). Information about their services can be found at access.ku.edu. Please contact me privately in regard to your needs in this course.

Course Schedule

Please see the schedule page.

Academic Integrity

Academic misconduct of any kind will automatically result in a 0 score on the paper reviews or project and your actions will be reported to the department chair. You must work on paper reviews individually and projects only with your group. Posting your assignments to internet discussion lists / forums / chatrooms is considered academic misconduct. Sharing your solutions with others is also considered academic misconduct.