Computer Science > News > Interview with phd alumni austin mordahl

Interview with phd alumni austin mordahl

Getting to know …  Austin Mordahl, 2024 Software Engineering PhD Alumni  

Through our interview series, we aim to showcase the experiences of CS alumni, current students, and faculty, providing valuable insights to inspire and guide future researchers. In this interview, we feature Dr. Austin Mordahl, who earned his PhD this year under the mentorship of Dr. Shiyi Wei.

He is now shaping the next generation of scholars as an Assistant Professor at the University of Illinois Chicago. Explore Austin’s journey for an in-depth view of his academic and professional experiences, where he reflects on his thesis, inspirations, and mental health.

Can you share a little bit about yourself? 

I was born overseas, in Yemen, and moved to the U.S. when I was a baby. I grew up in Cheyenne, Wyoming, and moved to the Dallas area when I was 16. I completed both my undergraduate and graduate work at UTD. I enjoy playing video games, knitting, trying new foods, and playing with my cat in my free time.

You earned your PhD in software engineering. What was your primary area of research? What type of research did you conduct while obtaining your PhD?

My primary area of research is static analysis. In a very general sense, static analysis builds a model of how software may behave when it is executed and allows us to answer questions about whether the software can ever exhibit certain behaviors. Static analysis can answer questions like “Can this program ever exhibit a certain type of bug?” or “Can this program ever leak sensitive data?” Sounds good, right? However, static analysis is not perfect. It has been proven that the problem of static analysis is “undecidable;” in other words, it is impossible to write a static analysis that will, for every program, provide the correct answer. Instead, we always must sacrifice one of three distinct analysis properties. We can either compromise the precision of the analysis (i.e., the analysis will sometimes indicate that a program that does not have bugs does have bugs), the soundness of the analysis (i.e., the analysis will sometimes indicate that a buggy program does not have bugs), or the termination of the analysis (i.e., sometimes the analysis will get stuck in infinite computation). In practice, we want static analysis to terminate, so researchers usually sacrifice some soundness and precision.

One major consequence of undecidability is that there is always room to improve static analysis algorithms for particular use cases, and a lot of research in static analysis deals with developing the most sound and precise analysis algorithms that we can that are still guaranteed to terminate. However, the research I did as a Ph.D. student focused on a different problem: static analysis algorithms are difficult to test. Remember, static analyzers are themselves programs; like any program, they contain bugs. However, static analyzers are performing complicated computations and modeling, which makes it hard for us to know whether what they report is correct. For example, let’s say you run a static analyzer on a small-to-medium-size program comprising a few tens of thousands of lines of code. The static analyzer reports, say, 100 potential bugs it thinks exist in the program. To know if the analyzer was correct, you would have to manually investigate each report to see which ones describe actual bugs and which ones are false alarms. This is incredibly time-consuming and error-prone, and it does not even touch on the possibility that the analysis missed real bugs that do exist.

 Your thesis was titled “Improving the Usability and Reliability of Configurable Static Analysis.” Can you explain your thesis in layman’s terms?

As I said in the last answer, static analyses are complicated to test, meaning that they can be incredibly unreliable. Something else that is important to know is that because static analysis is undecidable (i.e., there is no one-size-fits-all algorithm that will perform well on every program), many static analyzers are highly configurable, allowing the user to choose how precise or sound to make the analysis to achieve their desired output. These configuration options change how the analysis behaves and make testing the tool orders of magnitude more complicated than it already was.

Aside from the testing problem, adding that layer of configurability simply makes the tools hard to use. Extensive research has demonstrated that too much configurability makes software more difficult to use (like when there are 20 different brands of toothpaste at the store, and it becomes challenging to pick one).

That’s where usability and reliability come from. Usability refers to the difficulty of using the tool due to its extensive configuration space. In contrast, reliability refers to the bugs that static analysis tools may contain that prevent them from giving the correct answer.

To improve these aspects of static analyzers, I performed three distinct works in my thesis. Put very briefly, we first systematically explored the configurations of different static analysis tools to understand how the tools behave under different configurations. Even though real-world static analysis tools are highly configurable, nobody had actually studied the different configurations of analysis tools before. Second, we developed a new testing approach that finds bugs in static analyzers by comparing the results of related configurations. This allows us to fully automatically test configurable analysis without needing to do the manual investigation that I discussed in my answer to the last question. Finally, we developed another new testing approach for static analysis which allows us to fully automatically generate a lower bound for the results of the analyzer. This allows us to automatically find bugs in a static analysis by comparing its results to our automatically generated lower bound.

What inspired you to pursue a PhD?

My father never went to school. Instead, he worked manual labor for most of his life to support our family. Growing up, he constantly drilled into me and my siblings the value of education, and I’ve always been a curious person. I knew for many years that I wanted to eventually be a professor so that I could do interesting and exciting research and teach others about this field. When you consider all of that, doing a Ph.D. was the only natural decision.

Why did you choose to pursue your PhD at UT Dallas?

I wish I had a better answer for this, but the honest response is that UT Dallas was the only school I applied to that accepted me. I am really grateful to UT Dallas for believing in me and giving me a chance to do a PhD.

What made you decide to choose what you were studying?

Like many incoming graduate students, I initially applied to the program, saying that I wanted to research AI and machine learning. I thought this would make me a more attractive candidate as it was hot and relevant, but now I know that it made my application indistinguishable from hundreds of others. I did not have a firm idea of what I wanted to research. Thankfully, Dr. Shiyi Wei, who was a new assistant professor at the time, reached out to me and presented some of his ideas about doing research, which included a project concerning static analysis. I found working with these tools to be incredibly interesting, and the rest is history.

What was the best piece of advice you received from your supervisor?

My advisor, Dr. Shiyi Wei, gave me lots of advice but primarily led through example. I believe the most valuable thing he taught me is that you cannot sit around and wait for inspiration to strike. Something people may not realize about the type of research we do is that it requires a lot of creativity and outside-the-box thinking, to identify problems that we are facing and come up with interesting and useful solutions. Shiyi taught me that, to be a successful researcher, you have to actively allocate time to think about your research and come up with new ideas; great ideas typically don’t strike like lightning out of nowhere.

Describe your experience studying at UT Dallas.

My experience studying at UT Dallas was filled with a variety of valuable learning moments. I had a strong start to my PhD, and then the coronavirus pandemic happened two years in. Like many people, I felt incredibly isolated and struggled a lot with establishing a consistent routine working from home. Despite these struggles, I made amazing connections at UT Dallas that will last my whole life, including with my advisor, other faculty who served as mentors, and my lab mates.

What type of obstacles did you overcome while obtaining your PhD?

The biggest issue I had was dealing with impostor syndrome. I was constantly questioning myself and never felt like I was good enough. It turns out it’s hard to do consistent, high-quality research when you have no confidence in yourself or your abilities. I’m not totally sure I would say that I entirely overcame this obstacle; I still deal with it to this day. However, I have learned to trust others when they tell me I’m on the right track. On a similar note, I struggled a lot with mental health problems, especially in the wake of the pandemic. Again, these things are not fully in the past for me, but these days I have a better idea of how to work with my brain rather than working against it.

What would you say if you could go back in time to talk to yourself during the first year of your PhD?

Up until my PhD, academics were always easy for me. I was your average classic gifted and talented student who was almost always in advanced programs and could sail through while studying very little. That ended once I started my PhD. Therefore, something that I struggled with a lot as a PhD student was dealing with failure. Failure happens all the time in research – your experiments don’t give you the results you were hoping for, or you find a critical bug in your code eight hours before the paper deadline, or that brilliant idea you had in the middle of the night has already been done by some research group eight years ago. I would tell myself that failure is a natural and critical part of the research process and is not an indictment of your ability and skill as a researcher. Repeated failure has often been a precondition for innovative, breakthrough research.

What projects did you take part in while studying at UT Dallas?

In addition to my thesis work, I participated in a few other research projects led by other students. For example, I worked with my former lab mate, Zenong Zhang, on some projects dealing with fuzz testing, an automatic form of testing that generates random input data to programs to try to make them crash. I also collaborated with some people outside UT Dallas on projects integrating static analysis with machine learning; one used machine learning to predict which configuration(s) of a static analysis tool were most likely to give you correct results, and another used machine learning to automatically classify the bug reports emitted by a static analysis as true or false.

Where are you currently working, and what type of work do you do there?

As of Nov. 1, I am an assistant professor at the University of Illinois Chicago (UIC), primarily doing research but also teaching, starting in Spring 2025. I am very excited!

How did your PhD help you get your current job? What was your job search like?

Having a PhD is a requirement to become an assistant professor. My job search was fun; I was fortunate to interview at many schools across the country and had a few different offers to pick from in the end. I ended up choosing UIC because I had a positive experience there during my interview; I met a lot of really interesting professors and got along well with the department head. Also, I love big cities and was excited for the opportunity to live in Chicago.

How did you decide to enter the field of academia?

I was always attracted to the independence and freedom that academia affords. It’s incredibly rewarding to see an idea that you came up with work out in practice. I also really love to work with students, so academia gives me the opportunity to work with students both as a teacher and as an advisor. Finally, a major perk of being in academia is that you travel around the world to attend conferences, which didn’t hurt.

Will you plan to keep up with your research as an assistant professor of computer science at the University of Illinois Chicago?

Yes! I plan to continue pursuing my research, developing new ways to improve the usability and reliability of configurable static analysis tools. However, that is probably not going to be my research focus for the rest of my career. There are many other software engineering and computer science topics that interest me, and I look forward to working with students with whom I can explore those other interests.

Do you have any advice for future students seeking to obtain a PhD at the UT Dallas Computer Science department?

My biggest piece of advice is not to go it alone. Many people outside academia simply do not understand what it is that PhD students do. My family still asked me how my classes were going three years after finishing my coursework. Therefore, it’s important to form connections with your fellow students and with professors who understand the process and can empathize with the struggles that come along with it. Invite your lab mates out for dinner or drinks after work. Make friends in other labs. Don’t be afraid to reach out to professors who are doing work you’re interested in, even if you’ve never taken a course with them or if they are at a different university.