PL Perspectives

Perspectives on computing and technology from and for those with an interest in programming languages.

On May 27, 2019, Laurie Hendren, Professor of Computer Science at McGill University, Montreal, passed away after a long illness. She leaves her daughter Jane and husband Prakash Panangaden.

Laurie shared the Sable Lab with Clark Verbrugge. Ondrej Lhotak and Eric Bodden are former Ph.D. students of Laurie. Patrick Lam did research with Laurie as an undergraduate, masters student, and postdoc. Here they jointly share their memories.

Laurie was probably best known for Soot, a highly popular framework for the analysis and transformation of Java programs. By now, the papers describing Soot have well over a thousand citations over various communities. Soot is part of several commercial products and a number of large-scale deployments involving Fortune 100 companies.

Prior to Soot, Laurie was known for her work on shape and pointer analysis in C, as embodied in the McCAT compiler infrastructure. This work followed from Laurie’s Ph.D. thesis on parallelizing programs with recursive data structures. Her Ph.D. work was on SIL, a toy language that included many key features of C but, in particular, not function pointers. The abstraction was based on path matrices, which allow the analysis to read off aliasing relationships between locations.

The body of work which led to Laurie’s tenure was on pointer and shape analysis of C programs with function pointers. Rakesh Ghiya was the Ph.D. student who led that effort, although Maryam Emami is first author on a critical paper: Context-sensitive interprocedural points-to analysis in the presence of function pointers

The C work foreshadowed her later work on Java, and worked on real, though modest, C programs as appropriate for the standards (and processing power and storage constraints) of the time. The abstraction there was the points-to abstraction, which allowed reading off both must- and may-alias relationships between memory locations. Rakesh Ghiya’s paper with Laurie in POPL 1998, “Putting Pointer Analysis to Work“, was the encapsulating paper in that series, and showed how to use pointer analyses that Laurie had invented. Laurie’s experience in dealing with function pointers in the C context guided Ondřej Lhoták’s later work on Java pointer analysis (on Spark here and on Paddle here).

Laurie’s work always had open-source implementations standing behind it, and she tried hard to make the work easy to understand and  build on. The Soot project is, today, the best-known monument of the impact of this approach.

What was Laurie like? Always patient and eager to help. Eric remembers:

I personally first “met” Laurie online, in 2002. Where? Of course: on the Soot mailing list. During that year, Laurie helped me out conducting a program-analysis project under the supervision of Richard Jones. The task: visualizing call graphs. The tool to be used: Soot. As a total novice to program analysis, and even to Java at the time, I made all the usual beginners’ mistakes, but Laurie patiently guided me through the process – with success: the project scored in the OOPSLA 2003 student research competition, my turning point towards an academic career.

Laurie’s dedication and patience always set a great example for us. Here is one other story. Laurie was the PC Chair of PLDI 2002 in Berlin, a huge task that she took on with great dedication. The author of one of the accepted papers declined to attend the conference or to send a substitute presenter. Laurie had several discussions trying to persuade him to come. Finally, she got him to prepare slides with the agreement that she would give his talk. She gave the talk in a kind of dual role: both as the presenter, helping the audience understand the work; but also as a critical reader, pointing out some of the technical limitations. She also took audience questions and answered them in the same dual way. This is only one episode exemplifying Laurie’s extraordinary dedication to the conference, to ensuring that every paper would be presented, and to ensuring that the audience would have a chance to understand the overall idea of this paper.

Eric remembers first-hand the later years:

For me personally, it was not before 2005 that I had the chance to first meet Laurie in person, namely at AOSD in Chicago. There I got to know Laurie as not just a highly knowledgeable but also warm-hearted and fun person. Laurie had just started a joint project with Oege de Moor (then at Oxford University) on the AspectBench Compiler (abc), and was quick to bribe me into accepting a Ph.D. position at McGill by offering me her conference banquet ticket 😛

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.)

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.

Laurie’s history of creating large-scale, long-lasting infrastructure for practical compiler research culminated in her last major research work aimed at scientific computing. This work was motivated by discussion with and observation of scientists in other fields, where she noted that environments like MATLAB were frequently preferred by non-computer scientists over more traditional programming languages.  An interest in optimizing and improving the language combined with the limitations and frustrations of working with a closed-source, proprietary language inspired the McLab project.  This work aimed at providing an open-source scientist-friendly scientific computing alternative, as well as an analysis framework for exploring solutions to compiling and optimizing dynamic, array-based languages, both for research and for teaching. Since the project started around 2010, over two dozen students have written theses and been involved in this research, extending the work into a diverse range of topics and research contributions.

Impressively, Laurie continued to supervise students and lead individual and group meetings during her cancer treatment, with her last research meeting only a few weeks prior to her death. Since her cancer diagnosis in 2014, Laurie co-led the development of Opal, an app that allows cancer patients to better understand and coordinate their treatment (CBC news footage here). Opal won the 2019 Prix d’excellence by Quebec’s Health Ministry. Unfortunately, Laurie passed away just days before the award ceremony.

Laurie’s dedication to her students, her emphasis on addressing practical, real-world problems, and her outspoken, no-nonsense approach to research continue to inspire all of us to who worked with her.

Eric Bodden is Professor for Software Engineering at the Heinz Nixdorf Institute of Paderborn University and Director for Software Engineering and IT Security at Fraunhofer IEM. During 2006-2009, Laurie was Eric’s Ph.D. advisor. Today, Eric’s team continues to oversee the maintenance and further development of Soot.

Patrick Lam is an Associate Professor of Electrical and Computer Engineering and Director of the Software Engineering Program at the University of Waterloo. Laurie advised Patrick early in his career while he was an undergraduate researcher and they continued collaborating through his Master’s. After a Ph.D. at MIT, Patrick re-joined the Sable Lab as a postdoc.

Ondrej Lhotak is an Associate Professor within the Programming Languages Group at the School of Computer Science at the University of Waterloo. Laurie advised Ondrej’s Ph.D. thesis.

Clark Verbrugge is an associate professor in the School of Computer Science at McGill University. Together with Laurie, he headed the university’s Sable Lab.

Disclaimer: These posts are written by individual contributors to share their thoughts on the SIGPLAN blog for the benefit of the community. Any views or opinions represented in this blog are personal, belong solely to the blog author and do not represent those of ACM SIGPLAN or its parent organization, ACM.