Program Synthesis
This year in CS252R, our exploration takes us to the cutting-edge field of program synthesis. Program synthesis is the process of automatically discovering a program that satisfies a high-level specification, and it is often considered the pinnacle of programming language research. Reflecting its profound impact and challenge, the goal of solving program synthesis has been seen as equivalent to Artificial General Intelligence (AGI) since the inception of AI.
Current successes of program synthesis include automating repetitive tasks, enabling non-programmers to create software, and optimizing code for performance and efficiency. Other applications encompass automatic code repair, educational support for teaching programming, theorem proving, and even game development. These innovations are unleashing new levels of autonomy, creativity, and efficiency across various domains.
What Will You Learn?
- Components of Synthesis Systems: Explore the key components of synthesis, which include:
- Program Specification;
- Algorithms;
- User-Interaction Model.
- Classic Methods: Dive into the foundational techniques for program synthesis, such as:
- Stochastic Search-Based Synthesis;
- Symbolic Program Synthesis;
- Genetic Programming.
- Neural Approaches: Explore the integration of deep learning in synthesis, focusing on techniques such as:
- Neural-Guided Search;
- Large Language Models (LLMs);
- Relaxations.
- Multidisciplinary Insights: Understand how ideas from programming languages, artificial intelligence, human-computer interaction, algorithms, and other disciplines have influenced and shaped the field of program synthesis.
Course Structure:
- Assignments: Get hands-on with two guided mini-projects.
- Paper Presentation & Discussion: Lead the conversation on seminal research.
- Final Project: Conduct original research on a topic of your choice.
- Guest Lectures: Engage with industry researchers working at the cutting edge of program synthesis.