Undergraduate Researcher Experience Leads Nick Rioux to Explore PhD Programs
By Gwendolyn Schanker
Senior computer science student Nick Rioux has spent the past five years perfecting his ability to describe his research – to his parents, to fellow students, and to other researchers he meets at conferences.
“You’re so wrapped up in this world of using these terms and concepts,” he said. “It’s taken me years of practice to figure out how to have any hope of explaining the things I do.”
A veteran researcher with Professor Amal Ahmed, Rioux works in the world of programming languages. It’s a small, tight-knit community of researchers who are all familiar with the same jargon. Rioux says it’s important to share his work with people beyond that community.
“I think you need to explain why what you do is important and why people should care about it to everyone, not just the people in your area of research,” he said.
Rioux is accustomed to playing the role of translator, not just in the way he describes his research but also in the work itself. Since 2013, he’s worked alongside Ahmed and other CCIS students to improve compilers, which are programs that transform code written in one language (source code) to another language that can be used to run machine systems (machine code). The compilers the team investigates are used in safety-critical systems, like airplanes and nuclear reactors.
“If your phone crashes 1% of the time, it’s not really a problem,” Rioux said. “If an airplane does, that’s a problem.”
Part of Rioux’s goal is to improve upon current compilers, which he says are “big and complicated.” It’s far too easy to find a bug in a compiler program, which can cause trouble for machine systems.
“Even if your source code is right, it’s not going to do what you expect if the compiler has a bug,” he said. “It’s a major issue, especially if you’re working on code for airlines or other critical systems.”
He says that by analyzing the programs using math, researchers can write proofs that show that the compiler is doing what it has been asked to do. Rioux was coauthor on a paper published in January 2018 that demonstrated how dependently-typed languages, which are used to proof the correctness of source code, can be carried over to proof the accuracy of compiler programs as well. This would help to improve the security of compiler programs and the ease with which they are used. The paper was accepted by the Association for Computing Machinery (ACM) Symposium on Principles of Programming Languages (POPL) for 2018.
Rioux uses the example of the National Aeronautics and Space Administration to show the utility of the work his team is doing. He says that code for NASA spacecraft generally consists of around one line of code per day, but “most of the day is spent checking to make sure it works.”
“With proofs, we can make programs for critical systems much easier to write,” he said. “Software bugs and hardware bugs should be easier to prevent.”
Rioux is currently working on a couple of other projects with Ahmed, including creating a better understanding of how multiple programming languages can interact and designing an intermediate programming language that would allow parts of a compiler to be reused. He’s also in the midst of visiting graduate schools to decide where he wants to pursue his PhD in computer science.
In addition to his research with Ahmed, which included a co-op conducting research, Rioux has also spent time working in the computer science industry, having enjoyed co-ops at both HubSpot and Facebook. In the end, he maintains that his heart belongs to research, even though it means that he sometimes will “spend the day staring at a wall.”
“You’re answering questions that no one in the world knows the answer to. When you get stuck, sometimes there’s no one in the world that can help you,” Rioux says of working in research. “It’s really challenging but really exciting.”