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

  • EECS 201 (Discrete Mathematics), EECS 281 (Data Structures and Algorithms), or equivalent on discrete math, data structures, and algorithms
  • Familiarity with programming (for final projects and programming assignments)
  • Additional prior exposure to programming languages (e.g., EECS 490/590), compilers (e.g., EECS 483/583), and constraint solving but not required

  • 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?
    Typically, we have typically >40 minutes for the presentation and >30 for the discussion. We can also have discussion during the presentation.

    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

  • For assignments, you are free to discuss with others or work together towards the solution. However, all of your code must be written by yourself. Your write-up must be your own as well. Please list your collaborators in your submission.
  • For paper reviews, you are free to discuss papers with other students. However, the reviews must be written on your own and in your own words.
  • For paper presentations, you are also free to discuss with other students. However, the slides must be made by you. You can adapt some slides from others, but you must acknowledge it and you should not directly take existing slides for your presentation. The presentation must be delivered by you.
  • For final projects, you are free to work with your team members. It is okay that you seek external help but be sure to acknowledge that in your final project report. You are free to reuse existing libraries in your implementation, but you should acknowledge that and should not claim that as your contributions in the final project report. As a general rule, follow the College of Engineering Honor Code and, when in doubt, talk to the instructor. Any violation of academic honesty may result in a failing grade.

  • 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
    If you are enrolled in EECS 498:
    • 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