Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mohannadcse/program-synthesis


https://github.com/mohannadcse/program-synthesis

Last synced: 4 days ago
JSON representation

Awesome Lists containing this project

README

        

# CMPUT 605 - Advanced Topics in Programming Languages: Program Synthesis

## Organizational Information
* Offered in: Fall 2019
* Time: TBD
* Instructors: [Karim Ali](http://karimali.ca)

## Students
- Spencer Killen

## Calendar Description

Program synthesize strives to automatically create programs that satisfy a high-level, possibly incomplete, specifications. This course covers the foundations of program synthesis, including methods of program specification, SAT solvers, and program verification in addition to following methods of program synthesis:
- Inductive Synthesis (Including counterexample-guided inductive synthesis)
- Deductive Synthesis
- Superoptimization
- Program Sketching
- And Oracle-guided synthesis

The student will review literature and study advancements in the field. The second half of the course is oriented towards creating a project which demonstrates and practicalizes the student's learnings.

## Grading
* Class Presentations: 30%
* Assignments: 20%
* Practical Experiments: 20%
* Final Report: 30%

## Course Plan
| Duration | Activity | Details |
| ---- | -------- | ------- |
| Sep 03 - Oct 12 | Literature Review | Weekly meetings for presentation/discussion of papers. Students will explore existing tools for program synthesis and will execute at least one programming assignment using one or multiple tools so that they can understand the advantages and shortcomings of each tool. |
| Oct 11 | Project Proposal | 1-page written proposal + presentation to the instructor. |
| Oct 11 - Dec 5 | Tool improvements and formulation of research problems | Weekly meetings to review tool designs, specify improvements and formulate potential research problems. |
| Dec 6 | Final project presentation and report | 30 minute presentation + a written conference-style report. |

## Reading List (tentative)

### Tools
- [Programming Z3](https://theory.stanford.edu/~nikolaj/programmingz3.html)
- [Introduction to Datalog](https://x775.net/2019/03/18/Introduction-to-Datalog.html)
- [Datalog](https://github.com/oracle/souffle/wiki/user-manual)

### Books
- [Behavioral Program Synthesis with Genetic Programming 2016 (Krawiec, Krzysztof) **Book**](https://www.springer.com/gp/book/9783319275635)
- [Program Synthesis 2017 (Gulwani, Oleksandr Polozov, Rishabh Singh) **Book**](https://www.microsoft.com/en-us/research/wp-content/uploads/2017/10/program_synthesis_now.pdf)
- [Logic Program Synthesis from Incomplete Information 2012 (Flener) **Book**](https://link.springer.com/book/10.1007%2F978-1-4615-2205-8)

### Survey/Overview
- [Program Sythesis 2018 (Polozov) **Blog**](https://alexpolozov.com/blog/program-synthesis-2018/)
- [Program Sythesis in 2019 (Bornholt) **Blog**](https://blog.sigplan.org/2019/07/31/program-synthesis-in-2019/)
- [Program Synthesis Without Full Specifications for Novel Applications 2015 (Perelman) **Dissertation**](https://homes.cs.washington.edu/~djg/theses/perelman_dissertation.pdf)
- [Program Synthesis by Sketching 2003 (Solar-Lezama) **Dissertation**](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.207.9048&rep=rep1&type=pdf)
- [Microsoft Program Synthesis 2010- (Gulwani) **Research hub**](https://www.microsoft.com/en-us/research/project/program-synthesis/)

### Research
- [Constraint-Based Synthesis of Datalog Programs 2017 (Albarghouthi, Koutris, Nai, Smith) **Conference paper**](https://link.springer.com/chapter/10.1007/978-3-319-66158-2_44)
- [Syntax-guided synthesis 2013 (Alur, Bodik, Juniwal, Martin, Raghothaman, Seshia, Singh, Solar,-Lezama, Torlak, Udupa) **Conference paper**](https://ieeexplore-ieee-org.login.ezproxy.library.ualberta.ca/abstract/document/6679385)
- [Tutorial](https://ieeexplore-ieee-org.login.ezproxy.library.ualberta.ca/document/6670958)
- [Language to Specify Syntax-Guided Synthesis Problems 2017 (Raghothaman, Udupa) **Article**](https://arxiv.org/pdf/1405.5590.pdf)
- [The Sketching Approach to Program Synthesis 2009 (Solar-Lezama) **Conference paper**](https://link.springer.com/chapter/10.1007/978-3-642-10672-9_3)
- [Program Synthesis for Hierarchical Specifications 2014 (Hottelier, Bodik) **Conference paper**](https://www.semanticscholar.org/paper/Program-Synthesis-for-Hierarchical-Specifications-Hottelier-Bodik/315c8a3966282c1f7718e07aa92e6f7ba335974a)
- [Type-and-example-directed program synthesis 2015 (Osera, Zdancewic) **Conference paper PLDI**](https://dl.acm.org/citation.cfm?id=2738007)
- [A lightweight symbolic virtual machine for solver-aided host languages 2014 (Torlak, Bodik) **Conference paper PLDI**](https://dl.acm.org/citation.cfm?id=2594340)

## Resources from other courses
- [Synthesizing Programs with
Constraint Solvers 2012 (Ras Bodik, Emina Torlak) **Slides**](https://homes.cs.washington.edu/~bodik/ucb/Files/2012/CAV-2012.pdf)
- [Computer-Aided Reasoning for Software **Course**](https://courses.cs.washington.edu/courses/cse507/14au/sched.html)