COS IW 05: Independent Work Seminar
Auto-generation of Programs, Specifications, and Tests
Fall 2025


General Information

Instructor: Aarti Gupta, CS Building 209, 258-8017, aartig at cs dot princeton dot edu
      Office Hours: Tuesday 5:00-6:00 pm ET (and by appointment)

Meeting time and place: Tuesday, 10:40 am -- 12:00 pm ET, in CS 302

Seminar Info: Description, Schedule, Resources, Seminar Policy, FAQ.

Lectures, Notes:
      Available on the Canvas course website.

Announcements and Discussions:
      Course announcements, discussions, and questions are available on the Ed Discussion Forum.
 

IW Seminar Description

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.
 


Important Deadlines


Class Schedule

The schedule may change during the semester. Please check it frequently during the semester.
 
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

 

Resources


 

Seminar Policy

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:


 

Frequently Asked Questions