When Qirun Zhang was 13, he learned how to program robots. Now he’s a programming languages and software engineering assistant professor in the School of Computer Science, where he’s improving software reliability — not just for robots — but for everyone.
Computing has always been a part of Zhang’s life. His father developed computer chips, giving Zhang early access to the latest machines. He grew up playing computer games on an Intel 486, but it wasn’t until a middle school teacher showed him how to program in visual basic that he realized computer science could be much more than just hobby.
As a teen, Zhang’s interest in programming was about controlling a machine to achieve a goal. That goal was often programming robots to win high school competitions. When he studied computer science as an undergraduate at Zhejiang University, though, he found he loved learning about the theory and fundamentals behind programming as well.
Like many computer scientists, Zhang started programming to achieve his own goals, but he wanted to have a bigger impact and decided to pursue a Ph.D. at the Chinese University of Hong Kong.
“Rather than taking programming as a profession, I wanted to do something to fundamentally improve reliability of software and improve society,” he said.
Because it’s one of the most fundamental programming problems, Zhang first took on improving software reliability during his Ph.D. and postdoctoral work at University of California, Davis. Zhang pursued this from two angles: static programming analysis and software testing.
As a Ph.D. student, Zhang started looking at static programming analysis. These tools are used to find coding errors and ensure programs are functioning properly according to specifications.
One of the highlights of his work during this time was a compiler testing project that identified thousands of bugs in many of the most popular open source compilers. Zhang personally found more than 300 of the coding errors. From this work, Zhang is listed as one of the contributors to GCC, one of the largest open source compilers.
Zhang focused his postdoc efforts on software testing following these successes. One of the biggest challenges in software testing is modeling software behavior because there isn’t an algorithm that can solve it. Zhang has mitigated this problem by making the analysis model that is commonly used in software testing more precise and scalable.
He’s now working to develop a more principled and automatic approach to understanding program behavior, so programmers can know how long it will take to complete a task.
Having a positive impact
During his postdoc, he discovered another way to improve society — teaching.
“I realized that, as computer scientists, we can use our knowledge to impact people and deliver what we have to the next generation,” he said.
Zhang joined Tech for the opportunity to continue his research efforts and teach. Zhang plans to collaborate with faculty in everything from theory to software testing.
Some of the knowledge Zhang shares with his students is about more than just computer science. Zhang believes in teaching critical thinking so students can solve problems that benefit more than just their careers.
Yet a sense of perspective is often just as vital as the research question.
“My Ph.D. advisor Professor Michael Lyu taught me how to stay positive in research and life,” he said. “Staying positive opens up opportunities to overcome challenges, and that’s what I want my students to learn.”