ANN ARBOR, Mich.—Making computer programming faster, easier and more intuitive is the goal of a new $10 million National Science Foundation project that involves a University of Michigan researcher and is based at the University of Pennsylvania.
The five-year Expeditions in Computer Augmented Program Engineering, or ExCAPE, project includes multiple research institutions, partners in industry, and educational outreach to the next generation of computer scientists.
Stéphane Lafortune, a professor in the U-M Department of Electrical Engineering and Computer Science, will work toward automating the complicated, time-consuming and expensive software-debugging process. Lafortune is the co-creator of Gadara, a controller that can anticipate and prevent situations that might cause software deadlocks. Deadlocks freeze the machine when different parts of a program get caught in an endless cycle of waiting for one another as they access shared data.
“The Gadara project was a precursor to the multicore work we’ll do here, which is more generally applicable to all bugs and not just deadlocks,” Lafortune said.
The overarching goal of the ExCAPE project is ambitious and involves automating programming to the largest possible extent.
“Computers have evolved at a dramatic pace, but the technology that’s used to develop programs and software is evolving comparatively slowly. What it means to “code” hasn’t changed much in the last 20-30 years. It’s still done by expert programmers, and is quite time-consuming, expensive and error-prone,” said principal investigator Rajeev Alur, a professor of computer and information science in Penn’s School of Engineering and Applied Science.
In today’s programming languages, programmers must write out explicit instructions for what they want the program to do. For large projects, this kind of coding is so complicated that programmers need separate “verification” teams to weed out errors.
Over the last two decades, this verification technology has matured, leading to powerful analysis tools that can find subtle mistakes in real-world systems. The ExCAPE approach will leverage these advances to help programmers avoid such mistakes in the first place. The researchers are proposing an integrated toolkit for automated program synthesis. Such a toolkit would allow a programmer to essentially collaborate with a computer on writing a program, with each contributing the parts they are most suited to. With more powerful and integrated verification systems, the computer would be able to give feedback to the programmer about errors in the program, and even propose corrections.
“Let’s say you want to program a robotic car for parallel parking,” Alur said.”Instead of asking the programmer to write complete code in one particular style, we want to offer the programmer flexibility. The programmer can start by specifying high-level goals, such as the final desired car position and the requirement that there should be no collisions along the way.”
Programming for robotic behavior is one of four real-word problem areas the ExCAPE team will test their research on. The researchers will work with programmers at AT&T, Coverity, Honeywell, IBM, Intel, Microsoft, and Willow Garage, to see if the synthesis tool is effective in meeting their coding challenges.
Lafortune will also serve on the project’s executive committee and co-lead its education and knowledge transfer thrust, which will organize workshops, summer schools and programming competitions.
“We’d like to impact the undergraduate curriculum in computer science and engineering,” Lafortune said. “We think that students should be exposed to some of these new approaches.”
The grant is part of the NSF’s “Expeditions in Computing” program, which funds teams aiming ambitious, fundamental research agendas in computer science. The ExCAPE team also includes researchers from UC Berkeley, UCLA, Cornell, the University of Illinois at Urbana-Champaign, the University of Maryland, MIT and Rice University.
ExCAPE: Expeditions in Computer Augmented Program Engineering
Goal: to transform the way programmers develop software by advancing the theory and practice of software synthesis.