Recommendation letter for CS-Can Lifetime Achievement Award
I am writing to strongly endorse the nomination of Prof. Laurie Hendren for a posthumous Award for Lifetime Achievement in Computer Science. I’m honoured and also sad to be writing this letter. I’ll get back to it later, but no mention of Laurie would be complete without discussing her infectious laugh, which somewhat offsets the sadness.
Laurie has been an inspiration and role model for me from 1998 through 2018 as an undergraduate student, postdoc, faculty member, and administrator. I hope that in my own career I can continue Laurie’s outstanding legacy to some extent. I’ll mostly describe my perspective on her teaching and research, which were parts of her job that she obviously loved.
{\bf Teaching.} My first interaction with Laurie was in the summer of 1998, when I had an NSERC USRA and was also employed to help redesign COMP 202, McGill’s introductory computer science course. We produced a new version of the course, moving it from C/Pascal to Java. It’s fair to say that I learned about course design from her. She taught me how to design assignments by putting together the new COMP 202 assignments. This knowledge has served me well; I have redesigned a number of courses at Waterloo, including the most popular ECE Advanced Technical Elective, ECE 459 (Programming for Performance)—essentially a CS course—which enrolls 288 Waterloo engineering students a year these days.
Her undergraduate/graduate compilers course was also ahead of its time. I informally helped with the course but never formally took it or TAd it. She developed this version of the course while on sabbatical in 1996 at Aarhus. While most compilers courses had students develop a compiler for a toy imperative language, her course had students develop two compilers: one for Web services, and one for a Java Object-Oriented Subset. The application area for these compilers helped motivate students who would otherwise be somewhat compiler-skeptical.
Her intellectual vigour and skill at explaining computer science surely explain her Leo Yaffe university-wide teaching award in 2006-2007. A teaching-related example that comes to mind: while taking a teaching workshop she had to come up with an analogy for a computer science topic. Her example was parallelization and subway (Metro) turnstiles.
My other relevant experience with Laurie and teaching was a graduate seminar course that she offered for no teaching credit above normal teaching load. Offering this course was a literal demonstration of her willingness to go above and beyond.
% not much else to say about graduate teaching… COMP 621? COMP 520?
{\bf Research.} Graduate teaching spans the gap between teaching and research, so this is a good point to segue into writing about research.
Let’s start by summarizing her research achievements. She supervised the design and implementation of several compiler infrastructures, most notably Soot, which is still extensively used today, 20 years later. Soot is used by dozens of research groups and companies across the world and is an excellent base for others to develop Java analysis and transformation tools (including automatic Android analysis tools used in practice today). I’m most familiar with her work during the Soot period. Earlier in her career, Laurie made some of the first contributions to pointer and shape analysis, a topic that she returned to in the Java context with her student Ondrej Lhotak, now my colleague on the CS faculty at Waterloo. Afterwards, she did some quite intellectually interesting work in the context of McLAB, a Matlab replacement, and of course with the Opal health information portal. (I was fortunate enough to be in the audience for her last conference talk at SPLASH-I in 2018 where she presented the Opal work; even with her health challenges, she gave an excellent presentation of that work.)
Research achievements wouldn’t happen without graduate students to do the bulk of the actual work. Laurie provided strong leadership to her research groups, which consisted of a core of 6-10 students (sometimes more!) I was part of her group between 1998 and 2000 as an undergraduate and master’s student (although not hers), and then in 2007 as a postdoc.
As with teaching, I try to model the way I run my own research group after Laurie’s example. I remember coming to her office for meetings, often with other group members, and sitting on her comfortable couch. Then we’d talk about the research challenges. Laurie would offer insightful advice—I try to do that too, as best I can. What I would love to replicate, but somehow can’t, is her laugh. Probably the average number of funny things in these meetings was greater than 1. Then we’d go back to our offices across the hall and continue doing the science.
Here’s a concrete example of Laurie’s attitude towards science, as reported by Eric Bodden, now a Professor for Software Engineering at Paderborn.
\begin{quote} I remember that for my first conference paper Laurie and I struggled particularly hard. Using Soot and abc, and with the help of Ondřej, we had implemented three consecutive TraceMatch optimization stages, one using a simple and fast syntactic analysis of the instrumented program, one using a flow-insensitive pointer analysis and the third using an inter-procedural flow-sensitive typestate analysis. The problem? While the first two stages proved quite useful, the third stage did not work at all. It was horribly slow and so imprecise that it yielded no optimization potential. (It would be years later before we understood the cause: we were lacking context-sensitivity in both the typestate and pointer analysis, and flow-sensitivity in the latter, and field-sensitivity was quite limited as well, all of which we were excitingly able to remedy.) \vspace*{1em}
Of course Laurie and I discussed what to do with the result. Laurie was quite clear that dropping the negative result was out of the question, and she encouraged me to simply honestly report about the trial and error in my paper draft. To the great surprise of both of us, our honesty was well received by the majority of our reviewers at ECOOP 2007 and led to the acceptance of the paper. \end{quote} I was there when the reviews came in and we wrote a follow-up paper based on what we learned from the negative result.
{\bf Administration.} I’ll also lightly touch on administration. Laurie served as Associate Dean, Academic in the Faculty of Science at McGill. I don’t know much about what she did in that role. But her service inspired me to accept the roles of Associate Director and then Director of the Software Engineering program at Waterloo (jointly owned by Computer Science and Electrical and Computer Engineering). Once, I asked her why she did it and she said it was something different to do; and, many years later, she mentioned being headhunted for a Dean position and loving the core research supervisor part of being a professor, which was inspirational. I’ve found my own service roles to be quite rewarding and perhaps I’ve had my most direct impact on society in leading this 550-student-strong program at Waterloo.
As a topic that lies between research and administration, I’d also like to make a note about student mental health, a hot topic these days in my admin role. One of my coauthors and peers was the late Raja Vall'ee-Rai, the main architect of the Soot compiler framework. He suffered from, in the end, untreatable bipolar disorder and schizophrenia. Laurie modelled compassion and understanding in helping Raja try to deal with his mental health issues, attitudes that are helpful to me all too often now.
\newpage {\bf Conclusion.} Laurie strongly deserves the Award for Lifetime Achievement based on her extraordinary achievements in research, teaching, and administration. I’m honoured to be one voice on behalf of her graduate students, and I’m sure that each of the dozens of graduate students would say that this honour is richly deserved. Laurie has advanced our understanding of science, produced tools useful for humanity, and touched dozens of graduate students and thousands of undergraduates.