ILP studies algorithms that learn logic programs from examples. "Logic programs" as in programs in a language of the Logic Programming paradigm, such as Prolog or Answer Set Programming (ASP).
If you're interested in program synthesis, this is the staple modern reference:
Program Synthesis
https://www.microsoft.com/en-us/research/wp-content/uploads/...
For ILP, see this recent review:
Inductive logic programming at 30
https://arxiv.org/abs/2102.10556
Or this longer version, here:
Inductive logic programming at 30: a new introduction
https://arxiv.org/abs/2008.07912
(Both of which ignore my own contributions. Oh well :)
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!
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: