Syllabus (tentative)
Course Description
This is a special topics course that’s 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 reinforcement learning, neural networks and natural language processing, 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
Lectures, for both EECS 598 and EECS 498, are 3-4:30pm Tuesday and Thursday eastern time at 1010 DOW. EECS 498 has a discussion section which will take place at 3427 EECS 4-5pm Friday eastern time. All lectures will be recorded.Assignments
There are four assignments whose spcifications and code will be made available on the course website and Canvas.Paper Presentations
Each student will give a paper presentation in the second half of the semester. Depending on the enrollment, some of these presentations may be given by a small group of students (typically two).- 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 by noon eastern time the day before the presentation.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.
- Checkpoints: in order to make sure you make steady progress, you will submit two checkpoint reports. These are essentially partial reports that would eventually lead to a 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 - 10 pts
- Assignments - 15 pts
- A0: 0.5 point
- A1: 4.5 points
- A2: 7.5 points
- A3: 2.5 points
- Paper reviews - 20 pts (2 points each review, take 10 highest scores)
- Paper presentation - 25 pts
- Final project - 50 pts
- Project proposal - 10 pts
- Checkpoints - 10 pts (5 pts for each checkpoint)
- Final project presentation - 15 pts
- Final project report - 15 pts
- Class participation - 10 pts
- Assignments - 30 pts
- A0: 1 point
- A1: 9 points
- A2: 15 points
- A3: 5 points
- Paper reviews - 10 pts (1 point each review, take 10 highest scores)
- Paper presentation - 20 pts
- Final project - 50 pts
- Project proposal - 10 pts
- Checkpoints - 10 pts (5 pts for each checkpoint)
- Final project presentation - 15 pts
- Final project report - 15 pts