## Syllabus (tentative)

#### Course Description

This is a special topics course open to both graduate and undergraduate students. The course will look at recent advances in intelligent programming systems, an exciting field that sits at the intersection of programming systems and artificial intelligence (AI). Programming is known to be hard for computer end-users, novice programmers, or even professionals, and intelligent programming systems aim to simplify programming by incorporating AI, including traditional approaches such as symbolic search and automated logic reasoning as well as more recent advances in areas such as the latest machine learning models, into the programming workflow. Such systems allow users to “program from specifications”, instead of manually writing code. For instance, one can provide input-output examples, natural language descriptions, or demonstrations as specifications from which the system can automatically generate programs. This area is commonly known as “program synthesis” in the programming languages and formal methods community and “program induction” in the machine learning and AI community.#### Prerequisites

#### Lectures and Discussions

Students are expected to attend lectures and interact with the instructor and other students. All lectures are recorded and will be published immediately after lectures. Discussion sections are optional and are convereted to office hours.#### Assignments

All assignments will be published on Canvas.#### Paper Presentations

Students will give paper presentations in the second half of the semester.- Paper assignment: each student or group of students will choose a paper from a predefined list of papers. You can also choose papers not in the list but that would require discussing with the instructor beforehand.

- Presentation: once you are assigned a paper, you will present the paper (potentially
with another student) and serve as the "student lead" of the discussion for that paper.
A few tips how to prepare your presentation:
- Read the paper in detail. Try to understand the paper as much as possible. You may need to pick up some necessary background knowledge as well as read a couple of related papers. However, it's completely okay that you don't understand every detail in the paper. In that case, please make sure to create a list of questions and discuss that during your presentation.
- Prepare your own slides. Consider covering a few things in your slides: (1) What is the problem this paper aims to solve? (2) Why is this problem important? (3) Use a concrete example to illustrate what the problem is and how the paper solves it. (4) Give necessary background to help everyone in the class understand the paper. (5) What are the key ideas underlying the paper's approach? (6) Explain the paper's approach in more details. (7) How well does the paper's approach work? (8) What are some limitations of the paper's approach? How can we improve it?
- Create a demo if possible. Some papers have artifacts such as code. Play with their code and see how it works. You can give a live demo of their tool, or make a video recording.
- Share your thoughts. It's important to think critically. What do you like and dislike about this paper?

#### Paper Reviews

Before each paper presentation, every student, except the student lead(s), is required to write a review and submit it using the HotCRP system.#### Exams

No exams.#### Final Project

The final project is research-oriented, which means you will need to propose a problem that you'd like to solve, work towards solving it, evaluate your solution, and finally write it up and present your results to others.You are encouraged to collaborate with 1-2 other students for the final project. You can also choose to work on your own. However, if you plan to form a team with size greater than three, please talk to the instructor in advance.

Each team will submit one single final project report, which must describe how the work was divided among team members and acknowledge external help if any. Each team will also give a short presentation of your work at the end of the semester.

There are a few milestones leading towards a final project report and presentation.

- Proposal: you will need to first write a 2-3 page project proposal including: (1) a statement of the problem you plan to investigate, (2) an explanation why this problem is interesting, (3) a description of your proposed approach. Note that a project proposal is not a final report. That means, you won't have all the details of your approach in your proposal, however, you should have some rough ideas how you would tackle the problem, what techniques you may draw upon, what important milestones you want to accompolish, as well as how you plan to evaluate your approach once it's developed. You should include these in your proposal.
- Checkpoint: in order to make sure you make steady progress, you will submit one checkpoint report. This is essentially a partial report that would eventually lead to a complete final project report.
- Final project report: at the end of the semester, you will write a final project report.
- Final project presentation: at the end of the semester, you will present your work to the entire class.

#### Collaboration Policy

#### Grading

Your final grade will be calculated as follows.**If you are enrolled in EECS 598:**

- Class participation - 5 points
- Assignments - 25 points
- A0: 1 point
- A1: 1 point
- A2: 5 points
- A3: 3 points
- A4: 7 points
- A5: 8 points
- Paper reviews - 15 points
- Paper presentation - 30 points
- Final project - 50 points
- Project proposal - 10 points
- Checkpoints - 10 points
- Final project presentation - 15 points
- Final project report - 15 points

**If you are enrolled in EECS 498:**

- Class participation - 5 points
- Assignments - 50 points
- A0: 1 point
- A1: 4 points
- A2: 10 points
- A3: 5 points
- A4: 15 points
- A5: 15 points
- Paper reviews - 10 points
- Paper presentation - 15 points
- Final project - 45 points
- Project proposal - 10 points
- Checkpoints - 5 points
- Final project presentation - 15 points
- Final project report - 15 points