Looking To Enhance Programming, Ruzica Piskac Wins CAREER Award

Departments: Computer Science

For a project that aims to eliminate some of the grunt work from programming, Ruzica Piskac has received a 2016 Faculty Early Career Development CAREER Award from the National Science Foundation (NSF).

Piskac, assistant professor of computer science, will use the five-year, $500,000 award to develop her project "Synthesis in a Live Programming Environment." The project involves making real-time algorithms to synthesize code, and developing an intuitive form of code repair. One of the goals is to increase programmer productivity, and lower the barriers to entry for novice programmers.

Piskac's work would allow the user to provide a few input-output examples, which would then result in the code being automatically derived.

"We use this idea that users can easily demonstrate their intentions by providing representative examples," said Piskac, who has been with Yale since 2013. "In our work on synthesis of scripts, sometimes it is enough to provide one single example, and we can automatically synthesize the desired code."

The proposed programming framework will also work in the other direction. By generating representative examples to illustrate code behavior, the user can see in real time whether the code is doing what it's designed to do. If users notice examples that don't match the intended behavior, they can modify the source code or change the examples to correctly convey the behavior.

Not only would the project eliminate some of the tedium in writing code, it would also reduce the chance for error.

"Instead of writing all this which is hard to read, and even being an experienced programmer, you'll probably forget something," said Piskac, pointing to a long string of characters on her computer screen describing a script for file manipulations, "you can instead provide examples, and our tool will automatically generate this scripts for you."

Ideally, her research will allow programmers to work on problems that truly require human thinking and let computer take care of tasks that can be automatically generated.

"It's to make programming easier and nicer," she said. "If you can teach computers how to do specific details that have to be done, you can think about more complex, smarter stuff."