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 AI-based programming, an exciting field that sits at the intersection of programming systems and AI. Focus will be placed on symbolic techniques, but neural and neuro-symbolic approaches will also be covered. Applications of these techniques will also be covered.Programming is known to be hard for non-expert computer users, novice programmers, or even software engineers. AI-based 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 machine learning (such as large language models)—into the programming workflow. Such systems allow users to “program from much higher-level 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 matching programs. This area is commonly known as “program synthesis” in the programming languages and formal methods community and "code generation" 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
We will make several slots available for paper presentations, in the second half of the semester.- A list of papers will be made available. You can also choose papers outside this list but that typically requires instructor's approval beforehand.
- Once you are assigned with a paper, you will present it during a lecture slot and also serve as the "student lead" of the subsequent discussion.
- 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 the following 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 in practice? (8) What are the key limitations? 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 another student 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 two, 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 in your proposal. However, you should have some rough ideas on how to tackle the problem, what are some milestones along the way to solve it, 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: by the end of the semester, you will submit 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 CSE 598:
- Class participation - 5 points
- Assignments - 25 points
- A0: 1 point
- A1: 1 point
- A2: 5 points
- A3: 3 points
- A4: 5 points
- A5: 5 points
- A6: 5 points
- Paper reviews - 5 points
- Paper presentation - 20 points
- Final project - 50 points
- Project proposal - 10 points
- Checkpoint - 10 points
- Final project presentation - 15 points
- Final project report - 15 points
- Class participation - 5 points
- Assignments - 35 points
- A0: 1 point
- A1: 3 points
- A2: 6 points
- A3: 5 points
- A4: 6 points
- A5: 7 points
- A6: 7 points
- Paper reviews - 5 points
- Paper presentation - 10 points
- Final project - 50 points
- Project proposal - 10 points
- Checkpoint - 10 points
- Final project presentation - 15 points
- Final project report - 15 points