COS IW 05: Independent Work Seminar
|
Wouldn’t it be great if you could somehow say what a program should do, sketch a program outline, but the rest would get automatically generated? Or, given a piece of code, some tool could give you a brief specification that summarizes what the code does? Or, it could automatically generate testing code that you could run to check that the program works correctly? Indeed, automated synthesis of programs, specifications, and test inputs is an active area of research in programming languages (PL). Specifications include loop invariants, method contracts (preconditions, postconditions), and assertions for checking runtime bugs. With the recent explosive growth of machine learning (ML) and generative AI, there is also great interest in combining PL-based techniques with ML-based techniques, for automated generation of code, program specifications, and test inputs in a variety of application domains.
Students in the seminar will choose an application domain of their interest. They will use available PL-based tools (such as Sketch, CBMC) and/or ML-based tools (such as ChatGPT or other LLMs), design a suite of benchmarks for evaluation, and experiment with different synthesis strategies to generate a variety of programs, specifications, or test inputs for software testing. Students may work on a team project, but with prior permission of the instructor, and where each student has a distinct semester-size component of the project.
There are no prerequisites for this seminar beyond COS 217 and COS 226. Students who have taken COS 326 (or similar) are welcome to do a more technical IW focusing on program verification/synthesis. Students will be expected to attend all seminar meetings. The first two seminar meetings will provide some background, introduction to program synthesis tools, and pointers to recent papers that combine PL-based and ML-based techniques for automated synthesis. The remaining meetings will be used for discussions on project proposals, techniques, and updates; with students reporting their progress each week and doing a class presentation at the end.
| Date | Topic | Notes and Resources |
| Sep 2 | Introductions and Background | Background papers: [B1] [B2] [B3] |
| Sep 9 | Tools and Project Ideas | Synthesis tools: [T1] [T2] |
| Sep 16 | Project ideas: bring a draft for Written Project Proposal to class | |
| Sep 23 | Proposal presentations | Sep 30 | Proposal presentations, project updates |
| Oct 7 | Progress updates, discussion, and feedback | |
| Oct 14 | Fall recess, no class | |
| Oct 21 | Progress updates, discussion, and feedback Discuss any issues reported in Checkpoint form |
|
| Oct 28 | Progress updates, discussion, and feedback Discuss feedback in Checkpoint form |
|
| Nov 4 | Prepare draft of project slides | Attend "How to Give an IW Talk" on Nov 4, 12:30 PM |
| Nov 11 | Final Presentations: practice talk w/demo | Attend "How to Write an IW Paper" on Nov 11 at 12:30 PM |
| Nov 18 | Final Presentations: practice talk w/demo Written Final Report: bring a draft outline to class |
|
| Dec 2 | Last class: discussion, suggestions Written Final Report: bring a draft of some sections to class |
We recognize the potential benefits of using (Generative) AI tools for various tasks in this seminar, ranging from initial project exploration (explaining concepts and related work), to project design and implementation (code generation, testing), and final presentation and report preparation.
Indeed, we encourage projects that might use and study AI tools for various tasks in software development (e.g., code generation, debugging, testing).
This seminar allows use of AI tools, with the following requirements: