4 ms·
I got a lot out of this course https://people.csail.mit.edu/asolar/SynthesisCourse/ https://people.csail.mit.edu/asolar/SynthesisCourse/ from one of the authors
by yldedly 5y ago
I got a lot out of this course https://people.csail.mit.edu/asolar/SynthesisCourse/ https://people.csail.mit.edu/asolar/SynthesisCourse/
from one of the authors of OP.
- YeGoblynQueenne 5y agoOh, yes! I should have added that to my links. Thanks!
- exdsq 5y agoSo my little project was essentially a research survey on neural program synthesis - do you have any good sources on building program synthesis projects? I noted a lot of the literature talks about outcomes but rarely how I can go about building something small that takes some Input, Output tuples and returns some code. Ended up dropping the MSc because of Covid and moving to the Bay Area but I'd love to eventually do a research-focused masters in the future. Which may be difficult, because I don't have a Bachelors to begin with and took a lot of effort to get onto a Masters in the first place lol!
- YeGoblynQueenne 5y agoYou mean resources on creating your own program synthesis system? Hm, I don't know of anything like a program synthesis toolbox, like OpenCV for machine vision, etc. There are many freely available program synthesis systems, but most are research prototypes and they only use a particular approach anyway, while I think you 'd prefer to be able to experiment with different approaches, no? I fear the best option is to try to roll-your-own, based on the descriptions in many different program synthesis papers. Btw, I wouldn't choose neural program synthesis for a first Project! First because neural program synthesis requires as training examples both programming tasks (usually in the form of I/O examples) _and_ programs solving the tasks, and many many of them to boot. Second because it's an uncommon enough approach, or combination of approaches, that I doubt you'll find much support for it in the standard neural net frameworks. I think the CSAIL program synthesis course suggested above by yldedly is a good starting place though. It's graded by a program synthesis project and you might find some tools meant to help students carry out their assignment on the course pages. Or you may try asking the tutors by email even. Other than that, the simples thing to get you started is to define a DSL, generate programs from it and test them against I/O examples of the target programs. That's the simplest, most primitive kind of thing you can do. It's not a very efficient thing to do, but it's a start. The trick is in figuring out how to define the DSL and how to search it efficiently. Good luck, I guess! Feel free to email me if you think I can help. See profile for email. Edit: Here's a blog post about creating a DSL in Python: https://dbader.org/blog/writing-a-dsl-with-python https://dbader.org/blog/writing-a-dsl-with-python