When Dr. Caroline Lemieux encountered computer science for the first time in her first year of undergraduate studies at UBC, she didn't realize that it would shape the course of her career.
"I liked math and thought it would be neat to take a computer class," says Dr. Lemieux, who returns to UBC this fall as an assistant professor of Computer Science. "I ended up really liking how you write text on a computer and suddenly you've built a program that can draw things and such. I found that incredibly cool."
As an undergraduate student, Dr. Lemieux was proactive, often raising her hand in class to ask and answer questions, and often helping her fellow students get through class. Her TA at the time took notice and suggested she apply for a TAship, which led to further undergraduate research in computer science.
"I had a lot of friends who went into big tech, but looking back, my high school math teacher had a significant impact on me. I don't know if I would have pursued math and computer science at university if I hadn't had a teacher that fostered my interest in the subject."
Having seen how influential educators have been in her life, she's inspired to teach a new generation of computer scientists. "My parents are professors and I've seen how rewarding it is for them to be able to empower students and help them get the jobs they want. You know, maybe they'll be the ones to go into big tech."
When you talk to Dr. Lemieux, you can tell computer science just makes sense to her. She has an aptitude for learning logical language systems like programming, which she compares to learning a new language.
"Different people might naturally have an affinity with that language or this one.” However, she emphasises that, “programming isn’t just for people who have discovered an interest in it early on. Everyone can learn it."
When asked if there were any hobbies that influence her approach to computer science, she laughs. "I think all my hobbies just give my brain time to think about something else!" Cooking a good meal after a long day at work, or even painting her nails (a spinoff of doodling in her notes from her school days) have been outlets for her creativity. "My hobbies are different than computer science. They're both creative, but there's something about artistic endeavours that’s very open-ended."
Dr. Lemieux’s background spans both academic research and stints with major tech companies like Google and Microsoft. Her speciality is fuzz testing (also known as fuzzing), an automated method that helps check for bugs—errors in software design—in programs before they surface and prove disastrous. Fuzzing works by sending random bytes as input to programs, and checking whether those inputs cause the program to crash. These crashes can indicate bugs with serious security consequences.
Although it’s been around since the 1980s, the widespread use of fuzz testing tools didn’t appear until after 2014. That’s when a security bug in the OpenSSL cryptography library—more commonly known to web users through the security lock beside the URL bar in their browser—allowed data to be leaked from code that was supposed to be secure.
In Canada, the flaw resulted in theft of hundreds of SSNs from the Canada Revenue Agency web system. It was around this time that Lemieux was recruited by her advisor at University of California, Berkeley to do research in fuzz testing.
"I've always liked the idea of automated program testing—and realizing that flaws in programs people use every day can have real world impacts,” says Dr. Lemieux, who will be teaching a course on fuzzing at UBC. “It's a very empirical field, experiment driven, with lots of data analysis and algorithm development."
Although things have changed rapidly in the last 10 years since Lemieux entered the labyrinth of computer science, she's found her niche.
"If you try to keep up with everything, you're just going to get extremely overwhelmed and not be able to make progress. I think a part of any advanced education is learning to carve out a little space you are going to keep up with."