Building a New Generation of Software Programming Languages

CSE’s Nadia Polikarpova is Earning National Accolades for Her Research and Forging New Collaborations
Feb 13, 2020
Building a New Generation of Software Programming Languages

Nadia Polikarpova is a computer scientist who thinks outside the box. As an assistant professor in the Computer Science and Engineering Department, her novel approaches to automating software programming languages are earning her national recognition.

Polikarpova is a recent recipient of the National Science Foundation CAREER Award for work to help software developers increase productivity and reduce the number of mistakes in their code. She is also a 2020 recipient of the Sloan Research Fellowship. Each year, the Alfred P. Sloan Foundation awards two-year fellowships to just over 100 early-career scientists and scholars who demonstrate a unique potential to make a substantial contribution to their fields.

“I want to automate programming,” Polikarpova explained. “Today, software is crafted meticulously, involving a large amount of human effort. The problem with that is humans make mistakes. We routinely hear about private information being leaked or power outages being caused by software errors. Just like assembly lines made it possible to produce cars faster and more reliably, I want to give programmers the tools to build software faster and with fewer errors.”

Polikarpova’s ongoing projects include Lifty, a programming language that makes web applications more secure, Resyn, a tool that automatically generates resource-efficient programs, and Hoogle+, a website that helps programmers solve data manipulation tasks by combining functions from standard libraries.

"These awards are recognition of Nadia's outstanding scientific work and its potential to shape the future of the field," said Dean Tullsen, chair of the Computer Science and Engineering Department. "The CSE community here at UC San Diego is very proud of Nadia and all that she has accomplished."

A New Collaboration: Computer Science Meets Phonology

One of her most recent efforts has Polikarpova and her team collaborating with Professor Eric Baković, chair of UC San Diego’s Linguistics Department. On the surface it might not seem like the work of a computer scientist and a linguist share much common ground, but as it turns out Polikarpova’s research is well suited to solving some of Baković’s more complex phonology problems.

Phonology focuses on how sounds are put together to make language. Sounds aren’t organized arbitrarily into words; they follow certain patterns. The variations in how words are pronounced can be quite complex. Consider the word begged, which sounds like it ends in a “d.” On the other hand, sipped sounds like it ends in a “t.”

Some of these patterns can be quite complex, and analyzing them manually is time-consuming and prone to errors. Baković and colleagues wondered: Could computers help?

“We are looking at a particular set of complex language patterns that some phonologists have claimed are too computationally complex to actually be phonological patterns, that they are somehow unlearnable,” said Baković. “We started thinking, this is where the linguistics stops and computer science begins. We need to collaborate with people who understand these things more than we do.”

While looking for collaborators, one of Baković’s students reached out to a programming languages group and Polikarpova was intrigued.

“The phonologists wanted to use our expertise to automatically analyze the language data and then come up with rules that explain the processes that are happening in languages,” she said. “I'm happy they reached out to us; it was an unusual problem for me to think about!”

The team is currently developing an initial prototype that could solve some basic, textbook phonology problems. Once this is fully accomplished, the tool will process more complicated patterns and realistic data.

“We’re at the stage of figuring out how we can teach a computer phonology, but we're not looking at the outer realms of complexity here,” said Baković. “We're just figuring out, okay, where do we start?”

This project allows Polikarpova and her team her to delve into a completely different research area, which is rewarding for everyone.

“If someone is looking to collaborate with you, who is very different from you, just take the opportunity,” she says.

Listen to Polikarpova talk about her efforts to create new programming languages in this UCTV video.