Wired In: Cosmin Radoi

Wired In: Cosmin Radoi

Each week, staff writer PAUL WOOD spotlights a high-tech difference-maker. This week, meet COSMIN RADOI, a University of Illinois doctoral student whose work incudes participating as an entrepreneurial lead in the NSF I-Corps market discovery program, as well as working on developing IteRace and K framework to automatically keep bugs out of computer programs.

How do you identify and solve problems faced by software developers?

Our solution can be seen as an intelligent, always-available, assistant for the developer. It monitors the code continuously and offers improvement suggestions. The suggestions range from simple fixes for typos to complex changes for improving performance. When the programmer accepts a suggestion, the assistant changes the code directly, without requiring any extra human effort. Throughout, the assistant automatically learns from the programmer's responses, and adjusts its future suggestions to better fit the needs of the project.

You created IteRace. Tell us about that experience.

The first part of my Ph.D., which concluded in a M.S. thesis, was focused on program analysis for detecting data races, which are bugs in software running on multi-core CPUs. Data races are particularly hard to detect but can still have drastic consequences. For example, in 2003, a data race in a power control system led to the two-day power outage that affected over 50 million people in northeastern U.S. and in Canada. Tools like IteRace reduce the programmer effort needed to identify such bugs by an order of magnitude.

Where did you do your undergraduate work? What are you getting your doctorate in?

I did my undergrad at the Polytechnic University of Timisoara, Timisoara, Romania, my hometown. I first came to Illinois for a undergrad research internship in 2009. I liked both the work and the place quite a bit, so I returned for a Ph.D. I am graduating this year from the Formal Systems Laboratory, led by Professor Grigore Rosu, part of the Computer Science Department. My research is focused on techniques for automatically detecting and fixing problems in software with minimal effort from programmers.

What did your IBM Ph.D. Fellowship entail?

I did an internship at IBM Research, T.J. Watson, in 2013. We developed a technique for automatically converting software to MapReduce, a form that allows programs to be executed in the cloud. The results are encouraging ,so IBM also patented the technique we invented. The fellowship, while it does not have specific requirements, is a way to encourage me to continue that line of work. My current work can be seen as a different application of the same approach.

Tell us about the NSF I-Corps market discovery program.

The award program is rather unconventional for the NSF. Most NSF awards support fundamental research, with less concern for short-term impact. The I-Corps program is different in that it encourages, and funds, researchers to get out of the lab and talk to potential users of their technology. We participated in the program to learn more about how our technology could solve, or at least alleviate, problems faced by software developers. It was quite an intense experience, as we interviewed over 100 software developers and managers in about five weeks.

What have you learned? What kind of problems do programmers face that you could help with?

Software is becoming more complex and development pace keeps increasing. Programmers have to create high-quality code while the tools they use evolve rapidly: programming languages add new features, libraries update their interfaces, and other programmers keep changing the code at the same time. Programmers need to change the software to respond to these evolutions. The required changes are not particularly hard, but they are many and tedious, and sometimes subtle. In the end, many programmers simply avoid doing this work, which leads to software bugs and leaves the systems insecure. An old study by estimated software bugs cost $59 billion annually. From our experience and from the discussions we have with developers, there is no reason to believe things are any better now ... quite the contrary. The idea of automatically assisting programmers is not new, but we can do it better because of our underlying technology based on term rewriting. It allows us to develop code suggestions much quicker than traditional approaches. For the implementation, we are using K, the framework developed by our lab.

Tell us what K framework does.

K is a framework for giving formal semantics to programming languages, which helps with verifying that software does not have bugs. The framework has been successful: it has been used to give the first complete formal semantics to several large languages like JavaScript, Java and C. What I am doing is using the same underlying technology for solving a different problem, automatically fixing and improving code.

How do you plan to use this technology?

Most of our underlying technology is open-source and our focus is to bring it as quickly as possible into the hands of programmers, so we are taking the most direct route: a startup. For now, we have a research prototype. I am working on putting together a team to make the prototype into an easy-to-use product.

Your long-term research goal is to improve automatic code evolution. How do you transform code to make it faster and easier to read?

In recent years, AI techniques have been successful in automating many human intellectual activities that are perceived as tedious. We see computers doing legal work, suggest and vet diagnoses for patients, driving cars, etc. While we haven't seen this yet on a large scale, I believe computers will help software development in a similar way. Automation will free software developers from the tedious parts, allowing them to focus on the problems requiring creativity and high-level decisions.

Where do you see yourself 10 years from now?

The way things are evolving in our field, the next decade will be quite exciting. In 10 years, software developers and AI assistants, such as ours, will work together to write software. By then, AI assistants will have become a commodity, as ubiquitous as cloud computing is now. I see our company as a market leader, and I hope to be there, driving it towards the next evolutionary step: allowing everyone, including non-programmers, to program their apps without writing code.


Do you make much use of social media, or LinkedIn for your work? For personal interests?

Yes, I have LinkedIn, Facebook and Twitter, accounts, among others. I don't post very often but I find them useful for keeping in touch.

Do you prefer to read an article digitally or in book form? What are you reading right now?

Most of what I read is in digital form. I follow news from Google and RSS subscriptions. Lately, I have been reading a lot of startup-related articles, like Paul Graham's excellent essays.

Do you have any wearable electronics?

Not yet. They look useful for exercise tracking, but for everyday use, I try to avoid sources of distraction. I would take a smartwatch if it would be a complete replacement for the phone. We're not there just yet.