Assistant Professor Xinyu Wang is a new faculty member in CSE, joining us after completing his PhD in Computer Science at the University of Texas at Austin. His goal is to automate the creation of software based on user descriptions, an emerging field known as program synthesis. Wang told us a little about his goals as a researcher and professor.
What are the key research problems that motivate your work?
One problem I work on is machine programming (or program synthesis): how to teach a computer to write programs. This is an emerging field that sits at the intersection of artificial intelligence and programming systems. Instead of humans creating software manually (which is what we do today), the promise of program synthesis is to enable users to create software from specifications (such as examples, demonstrations) that are easier to write. My research aims to build fundamental and practical intelligent programming systems that allow programmers and/or non-programmers to create reliable software easily in a correct-by-construction manner.
Another thread of my research is around program analysis and verification, where we develop techniques that reason about programs and ensure their correctness and reliability. These techniques are very useful in a number of domains such as security, software engineering, etc.
What’s unique about your approach to tackling these problems?
While I love building practical intelligent programming systems, my research also has a focus on developing fundamental ideas and techniques that can be reused across different domains. I believe this unique combination of theory and practice will allow us to build useful intelligent programming systems in a scalable fashion.
How do you see your work impacting society at large?
Yes, I envision my work in intelligent programming systems to shape our programming paradigm in the future, reach to millions of people, and impact society at large. Due to the ubiquity of computing, programming has started to become an essential skill for an increasing number of people beyond traditional programmers. My research has the potential to democratize programming and make it possible for millions of people around the globe to automate otherwise tedious tasks using programming.
Tell me about a project you were especially proud of.
The project that I was really proud of is a program synthesis framework, called BLAZE, that I have developed recently, which can be used to automate programming tasks in a wide range of domains (such as data wrangling and data migration). Developing a high-quality program synthesizer for a new domain is notoriously hard. With my BLAZE framework, we are now able to develop synthesizers that are as good as the domain-specific ones but only take a fraction of the human effort as it took in the past. BLAZE pioneers the use of program abstractions in the context of program synthesis and leads to fundamental ideas that shed light on the design of future intelligent programming systems.
What’s most important to you as a mentor to graduate students?
As a mentor, I’d like to help my students make their projects succeed. I enjoy working with students on exciting projects: understanding problems, identifying challenges, and designing solutions. I see my job not only to produce great research, but more importantly, to produce great researchers.
What do you expect from the graduate students you work with?
I’d love to work with students who are excited about building intelligent programming systems/program reasoning tools and who can constantly teach me new things. I enjoy working with motivated students who are excited about pursuing their ideas.
What drew you to work as a professor?
Working as a professor allows me to have the freedom to always work on cutting-edge problems with excellent students.
When you’re not thinking about computer science, what else do you do?
I like sports. I started playing soccer when I was eight. Recently, I started swimming which is something I keep doing (almost!) every day.