|
COS Independent Work Seminar:
Programs Generating Programs
|
COS IW09
Fall 2018
|
General Information:
Instructor:
Aarti Gupta, CS Building 220, 258-8017, aartig at cs dot princeton dot edu
Office Hours: Mon 4:00-5:00 pm, Tues 3:00-4:00 pm
Teaching Assistant: Zachariah Cohen, zacohen at princeton dot edu
Meeting time and place:
Thursday, 11:00 am - 12:20 pm, CS 401
Links:
Description,
Schedule,
Resources,
FAQ,
Piazza
Description:
Do you wish sometimes that programs would just write themselves? 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? While this is difficult to do for Java and
C programs (and COS 126/217/226 programming assignments!), it is quite possible in
domain-specific languages for a variety of applications. Indeed, automated synthesis
of programs is an active area of research in programming languages and formal
verification. Available tools aim at automatically generating programs by filling
in holes in a partially-complete program sketch or by using input-output examples,
optionally using grammar rules that define the underlying search space of candidate
programs.
Participants in the seminar will choose from a range of program synthesis domains
and applications, or choose one of their own interest. Examples include automatic
parallelization of array-handling programs, obfuscation/de-obfuscation of
high-security code, automatic repair of security bugs through bit-twiddling, etc.
They will use available synthesis tools (such as Rosette, Sketch), design their
own libraries of program sketches, specify the correctness requirements, and
experiment with different synthesis strategies to generate a variety of target
programs. Those interested in backend techniques can also design and implement
new synthesis strategies using SMT (Satisfiability Modulo Theory) solvers that
perform the search and verification in these tools.
Schedule:
The schedule may change during the semester. Please check it frequently.
Orange rows are mandatory meetings and obligations for all IW students.
Date |
Topic |
Notes and References |
Sep 13 |
Introductions and Background |
Background Papers: [B1] [B2] [B3] |
Sep 13 |
Information meeting for all IW students |
Andlinger Center, Maeder Hall, Room 002, 4:30-5:30pm |
Sep 20 |
Background and Tools |
Synthesis Tools: [T1] [T2] [T3] |
Sep 27 |
Tools and Project Ideas |
|
Oct 03 |
Written project proposals due |
|
Oct 04 |
Proposal talks |
|
Oct 11 |
Proposal talks |
|
Oct 18 |
Progress reports, discussion, and feedback |
|
Oct 22 |
Submit Checkpoint Form |
|
Oct 25 |
Progress reports, discussion, and feedback |
|
Nov 01 |
Fall recess, no class |
|
Nov 08 |
Status update |
|
Nov 12 |
Attend "How to Give an IW Talk" |
4:30pm, Location: TBD |
Nov 15 |
Status update |
|
Nov 22 |
Thanksgiving, no class |
|
Nov 27 |
Attend "How to Write an IW Paper" |
4:30pm, Location: TBD |
Nov 29 |
Practice Talks w. Demos |
|
Dec 06 |
Practice Talks w. Demos |
|
Dec 10-14 |
Oral Presentations |
|
Jan 08 |
Written final report due |
|
Jan 09 |
Submit poster |
|
Jan 10 |
Poster session for all IW students |
9am-4pm, Friend Center, Convocation Room |
|
Resources:
- Independent Work Links:
- Synthesis Tools and Tutorials:
- Background Papers and Articles:
- [B1]
Sumit Gulwani. Dimensions in program synthesis. Proceedings of the International Conference on Principles and Practice of Declarative Programming (PPDP) 2010: 13-24.
- [B2]
Rajeev Alur, Rastislav Bodík, Garvit Juniwal, Milo M. K. Martin, Mukund Raghothaman, Sanjit A. Seshia, Rishabh Singh, Armando Solar-Lezama, Emina Torlak, Abhishek Udupa:
Syntax-guided synthesis. Proceedings of the International Conference on Formal Methods in Computer Aided Design (FMCAD) 2013: 1-8.
- [B3]
Leonardo de Moura and Nikolaj Bjorner. Satisfiability Modulo Theories: Introduction and Applications. Communications of the ACM, vol. 54, no. 9, 2011.
- Papers with Examples of Program Synthesis:
- Emina Torlak, Rastislav Bodík. Growing solver-aided languages with Rosette. In ACM Symposium on New Ideas in Programming and Reflections on Software, Onward! 2013.
- Armando Solar-Lezama, Liviu Tancau, Rastislav Bodík, Sanjit A. Seshia, Vijay A. Saraswat. Combinatorial sketching for finite programs. In Proceedings of the International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS) 2006: 404-415.
- Yewen Pu, Rastislav Bodík, Saurabh Srivastava.
Synthesis of first-order dynamic programming algorithms. In Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA) 2011: 83-98.
- Grigory Fedyukovich, Maaz Bin Safeer Ahmad, Rastislav Bodík.
Gradual synthesis for static parallelization of single-pass array-processing programs. In Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI) 2017: 572-585.
Frequently Asked Questions:
- May I partner with someone?
Yes, you may.
However, please make sure that each of the partners has a clear area of responsibility. Each person will have to write their own proposal, paper, and poster. Please discuss this with the instructor.
- How do I find related work?
Three major resources are:
When reading a paper, you should:
- Look at what papers are cited (go back in time).
- Look at what papers cite the paper (go forward in time).
- Are there any resources on campus to help me improve my writing skills?
Yes! See the Princeton Writing Program for more info.