LAURIE J. HENDREN



Personal Data

Date of Birth: December 13, 1958
   
Place of Birth: Peterborough, Ontario, Canada
   
Nationality: Canadian
   
Address: School of Computer Science
  McGill University
  318 McConnell Engineering Building
  3480 University Street
  Montreal, Quebec
  H3A 2A7
   
Telephone (work): (514) 398-7391
E-mail: hendren@cs.mcgill.ca
   
URL: http://www.sable.mcgill.ca/~hendren



Education

Honours and Awards

Academic and Research Positions

Research Grants

Note: In the following list the Principal Investigator is underlined.

Publications

Importance of Conference Publications

My publication profile includes both journal and conference publications. In my field conference publications are very important, are rigorously reviewed, widely disseminated and cited, and are taken very seriously by the research community. As this is somewhat unusual and sometimes misunderstood, a report was written for the National Academy Press and a summary of this report was published in an article entitled ``Academic Careers for Experimental Computer Scientists and Engineers" published in the April 1994 issue of the Communications of the ACM. This report includes the following paragraph.

``The ECSE research community depends heavily on conferences to communicate knowledge, and conferences are widely regarded as the preferred medium for maximizing the effect of ECSE research. However, the tenure and promotion process at many universities does not give conference presentations and publications a weight appropriate to their significance in the field, preferring instead publications in archival journals."

In fact, the top-notch conferences are highly competitive and papers presented at these conferences are reviewed and widely cited. The three most prestigious conferences relevant to my work are the ACM SIGPLAN sponsored conferences POPL (Principles of Programming Languages), PLDI (Programming Language Design and Implementation), and OOPSLA (Object Oriented Programming, Systems,Languages and Applications). It is very difficult to get papers accepted into these conferences. Serious researchers send only their best work to these conferences and typically the acceptance rate is about 20%. Papers are reviewed by three program committee members, and usually by at least one person outside the program committee. The papers appear in proceedings that are widely available in print form and through the ACM Digital Library. POPL, PLDI and OOPSLA papers are widely cited and form the core of the research literature in my field. We have had papers appearing in PLDI '92, PLDI '94 (two papers), POPL '96, POPL '98, PLDI '98, OOPSLA '00, OOPSLA '03, PLDI '03, PLDI '05, OOPSLA '04,PLDI '05, OOPLSA '05, OOPLSA '08, OOPSLA '11, and OOPSLA '12.

Of course my group also publishes in wide variety of other excellent conferences. For example our recent work on aspect-oriented programming has appeared in the International Conference on Aspect-Oriented Software Development (AOSD). We have had papers at AOSD '11, AOSD '10, AOSD '08, AOSD '06 and AOSD '05. Other important conferences include the International Conference in Compiler Construction, where we publish regularly, and a variety of software engineering and program understanding conferences.

Journal Publications

  1. Maxim Gorshkov and Laurie Hendren, SOCS Wayfinder: Using a Low Cost Solution for Geolocation and Pathfinding Indoors, International Journal of Computer Applications, Volume 152, Number 1, 8 pages, October 2016.

  2. Stephen M. Blackburn, Amer Diwan, Matthias Hauswirth, Peter F. Sweeney, José Nelson Amaral, Tim Brecht, Lubomr Bulej, Cliff Click, Lieven Eeckhout, Sebastian Fichmeister, Daniel Frampton, Laurie J. Hendren, Michael Hind, Antony L. Hosking, Richard E. Jones, Tomas Kalibera, Nathan Keynes, Nathanial Nystrom, and Andreas Zeller, The Truth, the Whole Truth, and Nothing but the Truth: A Pragmatic Guide to Assessing Empirical Evaluations, ACM Transactions on Programming Languages and Systems (TOPLAS), Volume 38, Issue 4, Article No. 15, pp. 15:1-15:20, October 2016.

  3. Eric Bodden, Patrick Lam and Laurie Hendren, Partially Evaluating Finite-State Runtime Monitors Ahead of Time, ACM Transactions on Programming Languages and Systems, Vol. 34, No. 2, pp. 7:1-7:52, 2012.

  4. Eric Bodden and Laurie Hendren, The Clara Framework for Hybrid Typestate Analysis, International Journal on Software Tools for Technology Transfer, Volumne 14, Issue 3, pp. 307-326, 2012.

  5. Eric Bodden, Laurie Hendren, Patrick Lam, Ondrej Lhotak and Nomair Naeem, Collaborative Runtime Verification with Tracematches, Journal of Logic and Computation, 20(3), pp 707-723, 2010.

  6. Ondrej Lhotak and Laurie Hendren, Evaluating the Benefits of Context-Sensitive Points-to Analysis using a BDD-based Implementation, ACM Transactions on Software Engineering and Methodology, Vol. 18., No. 1, pp. 1-53, 2008.

  7. Ondrej Lhotak and Laurie Hendren, Relations as an abstraction for BDD-based program analysis, ACM Transactions on Programming Languages and Systems, Vol. 30, No. 4, pp. 1-63, 2008.

  8. Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhotak, Ondrej Lhotak, Oege de Moor, Damien Sereni, Ganesh Sittampalam and Julian Tibble, abc: An Extensible AspectJ compiler, Transactions on Aspect-Oriented Software Development, Volume 1, pp. 293-334, March 2006.

  9. Ondrej Lhotak and Laurie Hendren, Run-time evaluation of opportunities for object inlining in Java, Concurrency and Computation: Practice and Experience, Vol. 17, Issue 5-6, pp. 515-537, April-May 2005.

  10. Yingchun Zhu and Laurie Hendren, Communication Optimizations for Parallel C Programs, Journal of Parallel and Distributed Computing, Vol. 58, No. 2, pp. 301-332, 1999.

  11. Yingchun Zhu and Laurie Hendren, Locality Analysis for Parallel C Programs, IEEE Transactions on Parallel and Distributed Systems, Vol. 10, No. 2, pp. 99-114, 1999.

  12. Laurie J. Hendren, Xinan Tang, Yingchun Zhu, Shereen Ghobrial, Guang R. Gao, Xun Xue, Haying Cai and Pierre Ouellet, Compiling C for the EARTH Multithreaded Architecture, International Journal of Parallel Programming, Vol. 25, No. 4, pp. 305-337, 1997.

  13. Rakesh Ghiya and Laurie J. Hendren, Connection Analysis: A Practical Interprocedural Heap Analysis for C, International Journal of Parallel Programming, Volume 24, No. 6, pp. 547-578, 1996.

  14. Herbert H. J. Hum, Olivier Maquelin, Kevin B. Theobald, Xinmin Tian, Guang R. Gao, and Laurie J. Hendren. A study of the EARTH-MANNA multithreaded system, International Journal of Parallel Programming, Volume 24, No. 4, pp. 319-347, August 1996.

  15. E. Merlo, J. F. Girard, L. Hendren, R. De Mori, Multi-valued Constant Propagation Analysis for User Interface Engineering, International Journal of Software Engineering and Knowledge Engineering, Vol. 5, No. 1, March 1995.

  16. Anne Rogers, Martin C. Carlisle, John H. Reppy and Laurie J. Hendren, Supporting Dynamic Data Structures on Distributed Memory Machines, ACM Transactions on Programming Languages and Systems, vol. 17, no. 2, pp. 233-263, March 1995.

  17. E. Merlo, Pierre-Yves Gangé, J.F. Girard, K. Kontogiannis, L. Hendren, P. Panangaden and R. De Mori, Reverse Engineering and Reengineering of User Interfaces, IEEE Software, Vol. 12, No. 1, pp. 64-73, Jan. 1995.

  18. Laurie J. Hendren, Guang R. Gao, Erik R. Altman, and Chandrika Mukerji, A Register Allocation Framework Based on Hierarchical Cyclic Interval Graphs, The Journal of Programming Languages, Chapman and Hall, Vol. 1, No. 3, pp. 155-185, 1993.

  19. Laurie J. Hendren and Guang R. Gao, Designing Programming Languages for the Analyzability of Pointer Data Structures, Computer Languages, Pergamon Press, Vol. 19, No. 2, pp. 119-134, April 1993.

  20. Joseph Hummel, Laurie J. Hendren, and Alexandru Nicolau, Abstractions for Recursive Pointer Data Structures: Improving the Analysis and Transformation of Imperative Programs, ACM Letters on Programming Languages and Systems, Vol. 1, No. 3, pp. 243-260, September 1992.

  21. L.J. Hendren and A. Nicolau, Parallelizing Programs with Recursive Data Structures, IEEE Transactions on Parallel and Distributed Computing, Vol. 1, No. 1, pp. 35-47, January 1990.

  22. J.I. Glasgow, L.J. Hendren and M.A. Jenkins, A Programming Language for Learning Environments, Computational Intelligence (Special Edition on AI Approaches to Education), pp. 68-75, May 1986.

Book Chapters

  1. Joe Hummel, Laurie J. Hendren and Alex Nicolau, Path Collection and Dependence Testing in the Presence of Dynamic Pointer-Based Data Structures, Chapter 2 in Languages, Compilers and Run-Time Systems for Scalable Computers (Proceedings of the 3rd Workshop), B. Szymanksi and B. Sinharoy (Editors), Kluwer Academic Publishers, pp. 15-27, May 1995.

  2. Kevin B. Theobald, Guang R. Gao, and Laurie J. Hendren, The Effects of Resource Limitations on Program Parallelism, In Advanced Topics in Dataflow Computing and Multithreading, Lubomir Bic, Jean-Luc Gaudiot and Guang R. Gao (Editors), IEEE Computer Society, pp. 348-373, 1994.

Refereed Conference Publications

  1. Erick Lavoie, Miguel Correia and Laurie Hendren, Xor-based Topology Management Beyond Kademlia, 11th IEEE International Conference on Self-Adaptive and Self-Organizing Systems (SASO 2017), September 2017.

  2. Hanfeng Chen, Wai-Mee Ching and Laurie Hendren, An ELI-to-C Compiler: Design, Implementation and Performance, 4th ACM SIGPLAN International Workshop of Libraries, Languages and Compilers for Array Programming (ARRAY 2017), pp. 9-16, June 2017.

  3. Vincent Foley-Bourgon and Laurie Hendren, Efficiently Implementing the Copy Semantics of MATLAB's Arrays in JavaScript, 12th Dynamic Languages Symposium, pp. 72-83, November 2016.

  4. Hanfeng Chen, Alexander Krolik, Erick Lavoie and Laurie Hendren, Automatic Vectorization for MATLAB, 29th International Workshop of Languages and Compilers for Parallel Computing, pp.171-187, September 2016.

  5. Andrew Bodzay and Laurie Hendren, AspectMatlab++: Annotations, Types and Aspects for Scientists, 14th International Conference on Modularity, pp. 41-54, March 2015.

  6. Faiz Khan, Vincent Foley-Bourgon, Sujay Kathrotia, Erick Lavoie and Laurie Hendren, JavaScript and WebCL for numerical computations: a comparative study of native and web methodologies, Proceedings of the 10th ACM Symposium on Dynamic Languages (DLS 2014), pp. 91-102, October 2014.

  7. Vineet Kumar and Laurie Hendren, Compiling MATLAB for High Performance Computing via X10, Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2014), pp. 617-636, October 2014.

  8. Rahul Garg and Laurie Hendren, Velociraptor: An Embedded Compiler Toolkit for Numerical Programs Targeting CPUs and GPUs, Proceedings of the 23rd International Conference on Parallel Architectures and Compilation Techniques (PACT 2014), pp. 317-330, August 2014.

  9. Rahul Garg and Laurie Hendren, A Portable and High-Performance General Matrix-Multiply (GEMM) library for GPUs and single-chip CPU/GPU systems, 22nd Euromicro International Conference on Parallel, Distributed and Network-based Processing (PDP 2014), pp. 672-680, February 2014.

  10. Xu Li and Laurie Hendren, Mc2For Demo: A Tool for Automatically Translating MATLAB to Fortran 95, Proceedings of IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE 2014, Tool Demo Track), pp. 458-463, February 2014.

  11. Xu Li and Laurie Hendren, Mc2For: A Tool for Automatically translating MATLAB to Fortran95. Proceedings of IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE 2014, Technical Paper Track), pp. 234-243, February 2014.

  12. Nurudeen Lameed and Laurie Hendren, Optimizing MATLAB feval with dynamic techniques, Proceedings of the 9th Symposium on Dynamic Languages (DL 2013), pp. 85-96, October 2013.

  13. Vineet Kumar and Laurie Hendren, First steps to compiling MATLAB to X10, Proceedings of the third ACM SIGPLAN X10 Workshop (co-located with PLDI 2013), pp. 2-11, June 2013.

  14. Soroush Radpour, Laurie Hendren and Max Scäfer, Refactoring MATLAB, Proceedings of the 22nd International Conference on Compiler Construction (CC 2013), pp. 224-243, March 2013.

  15. Nurudeen Lameed and Laurie Hendren, A modular approach to on-stack replacement in LLVM, Proceedings of the 9th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (VEE 2013), pp. 143-154, March 2013.

  16. Anton Dubrau and Laurie Hendren, Taming MATLAB, Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2012), pp. 503-522, October 2012.

  17. Jesse Doherty and Laurie Hendren, Proceedings of the European Conference on Object-Oriented Programming (ECOOP 2012), pp. 132-155, June 2012.

  18. Hesam Samimi, Max Schäfer, Shay Artzi, Todd Millstein, Frank Tip and Laurie Hendren, Automated repair of HTML generation errors in PHP applications using string constraint solving, Proceedings of the 2012 International Conference on Software Engineering (ICSE 2012), pp. 277-287, June 2012.

  19. Jesse Doherty, Laurie Hendren and Soroush Radpour, Kind Analysis for MATLAB, Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2011), pp. 99-118, October 2011.

  20. Nurudeen Lameed and Laurie Hendren, Staged Static Techniques to Efficiently Implement Array Copy Semantics in a MATLAB JIT Compiler, Proceedings of the 21st International Conference on Compiler Construction (CC 2011), pp. 22-41, March 2011.

  21. Andrew Casey and Laurie Hendren, MetaLexer: a modular lexical specification language, Proceedings of the 11th International Conference on Aspect-Oriented Software Development (AOSD 2011), pp. 7-18, March 2011.

  22. Raja Vallée-Rai, Laurie Hendren, Vijay Sundaresan, Patrick Lam, Etienne Gagnon and Phong Co, Soot - A Java Optimization Framework, In Special Edition of the Proceedings of CASCON for High-Impact papers for the 20th Anniversary of CASCON (IBM Center for Advanced Studies Conference), Toronto, November 2010. (originally in CASCON 1999)

  23. Patrice Pominville, Feng Qian, Raja Vallée-Rai, Laurie Hendren and Clark Verbrugge, A Framework for Optimizing Java Using Attributes, In Special Edition of the Proceedings of CASCON for High-Impact papers for the 20th Anniversary of CASCON (IBM Center for Advanced Studies Conference), Toronto, November 2010. (originally in CASCON 2000)

  24. Eric Bodden, Patrick Lam and Laurie Hendren, Clara: A Framework for Statically Evaluating Finite-state Runtime Monitors, Proceedings of the 1st International Conference on Runtime Verification (RV 2010), November 2010.

  25. Toheed Aslam, Jesse Doherty, Anton Dubrau and Laurie Hendren, AspectMatlab: An Aspect-Oriented Scientific Programming Language, Proceedings of the 9th International Conference on Aspect-Oriented Software Development (AOSD 2010), pp. 181-192, March 2010.

  26. Maxime Chevalier-Boisvert, Laurie Hendren and Clark Verbrugge, Optimizing MATLAB through Just-In-Time Specialization, Proceedings of the International Conference on Compiler Construction (CC 2010), pp. 46-65, March 2010.

  27. Dehua Zhang, Ekwa Duala-Ekoko and Laurie Hendren, Impact analysis and visualization toolkit for static crosscutting in AspectJ, Proceedings of the 17th International Conference on Program Comprehension (ICPC 2009), pp. 60-69, May 2009.

  28. Eric Bodden, Patrick Lam and Laurie Hendren, Object representatives: a uniform abstraction for pointer information, Proceedings of the BCS International Academic Conference, British Computing Society, pp. 392-405, December 2008.

  29. Eric Bodden, Patrick Lam and Laurie Hendren, Finding Programming Errors Earlier by Evaluating Runtime Monitors Ahead-of-Time, Proceedings of the Sixteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2008), pp. 36-47, November 2008.

  30. Barthélémy Dagenais and Laurie Hendren, Enabling Static Analysis for Partial Java Programs, ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA), pp. 313-328, October 2008.

  31. Eric Bodden, Reehan Shaikh and Laurie J. Hendren, Relational aspects as tracematches, Proceedings of the 7th International Conference on Aspect-Oriented Software Development (AOSD 08), pp. 84-95, Brussels, Belgium, March 2008.

  32. Eric Bodden, Laurie J. Hendren and Ondrej Lhotak, A Staged Static Program Analysis to Improve the Performance of Runtime Monitoring, Proceedings of the 21st European Conference on Object-Oriented Programming (ECOOP 2007), pp. 525-549, Berlin, Germany, July 2007.

  33. Nomair A. Naeem, Michael Batchelder and Laurie J. Hendren, Metrics for Measuring the Effectiveness of Decompilers, Proceedings of the 15th International Conference on Program Comprehension (ICPC 2007), pp. 253-258, Banff, Alberta, Canada, June 2007.

  34. Eric Bodden, Laurie J. Hendren, Patrick Lam, Ondrej Lhotak and Nomair A. Naeem, Collaborative Runtime Verification with Tracematches, Revised selected papers from the 7th International Workshop on Runtime Verification, LNCS 4839, pp. 9-21, March 2007.

  35. Michael Batchelder and Laurie J. Hendren, Obfuscating Java: The Most Pain for the Least Gain, Proceedings of the 16th International Conference on Compiler Construction (CC 2007), pp. 96-110, Braga, Portugal, March 2007.

  36. Nomair A. Naeem and Laurie Hendren, Programmer-friendly Decompiled Java, Proceedings of the 14th IEEE International Conference on Program Comprehension (ICPC 2006), pp. 327-336, Athens, Greece, June 2006.

  37. Neil Ongkingco, Pavel Avgustinov, Julian Tibble, Laurie Hendren, Oege de Moor, Ganesh Sittampalam, Adding Open Modules to AspectJ, Proceedings of the 5th International Conference on Aspect-Oriented Software Development (AOSD 2006), pp. 39-50, Bonn, Germany, March 2006.

  38. Ondrej Lhotak and Laurie Hendren, Context-Sensitive Points-to Analysis: Is it Worth It?, Proceedings of the 15th International Conference on Compiler Construction (CC 2006), LNCS 3923, pp. 47-64, Vienna, Austria, March 2006.

  39. Chris Allan, Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Ondrej Lhotak, Oege de Moor, Damien Sereni, Ganesh Sittampalam and Julian Tibble, Adding Trace Matching with Free Variables to AspectJ, Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2005), San Diego, California, USA, October 2005.

  40. Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhotak, Ondrej Lhotak, Oege de Moor, Damien Sereni, Ganesh Sittampalam and Julian Tibble, Optimising AspectJ, Proceedings of the ACM SIGPLAN 2005 Conference on Programming Language Design and Implementation (PLDI 2005), pp. 117-128, Chicago, Illinois, USA, June 2005.

  41. Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhotak, Ondrej Lhotak, Oege de Moor, Damien Sereni, Ganesh Sittampalam and Julian Tibble, An Extensible AspectJ Compiler, Proceedings of the 4th international conference on Aspect-oriented software development (AOSD 2005), pp. 87-98, Chicago, USA, March 2005.

  42. Feng Qian and Laurie J. Hendren, A Study in Type Analysis for Speculative Method Inlining in a JIT Environment, International Conference on Compiler Construction (CC 2005), pp. 255-270, Edinburgh, UK, April 2005.

  43. Anatole Le, Ondrej Lhotak and Laurie J. Hendren, Using Inter-Procedural Side-Effect Information in JIT Optimizations, International Conference on Compiler Construction (CC 2005), pp. 287-304, Edinburgh, UK, April 2005.

  44. Bruno Dufour, Christopher Goard, Laurie Hendren and Clark Verbrugge (McGill University) Oege de Moor and Ganesh Sittampalam (Oxford University), Measuring the Dynamic Behaviour of AspectJ Programs Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2004), pp. 149-168, Vancouver, Canada, October 2004.

  45. Ondrej Lhotak and Laurie Hendren Jedd: A BDD-based relational extension of Java, Proceedings of the ACM SIGPLAN 2004 Conference on Programming Language Design and Implementation (PLDI 2004), pp. 158-169, Washington DC, USA, June 2004.

  46. Feng Qian and Laurie Hendren, Towards Dynamic Interprocedural Analysis in JVMs, 3rd Virtual Machine Research and Technology Symposium (VM 04), pp. 139-150, San Jose, California, USA, May 2004.

  47. Jennifer Lhotak, Ondrej Lhotak and Laurie Hendren, Integrating the Soot compiler infrastructure into an IDE, International Conference on Compiler Construction (CC 2004), pp. 281-297, Barcelona, Spain, March 2004.

  48. Bruno Dufour, Karel Driesen, Laurie Hendren and Clark Verbrugge, Dynamic Metrics for Java, Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages and Applications (OOPSLA 2003), pp. 149-168, Anaheim, USA, October 2003.

  49. Qin Wang, Wei Wang, Rhodes Brown, Karel Driesen, Bruno Dufour, Laurie Hendren and Clark Verbrugge, EVolve: An Open Extensible Software Visualization Framework, Proceedings of the ACM Symposium on Software Visualization (SoftVis 2003), pp. 37-46, San Diego, USA, June 2003 .

  50. Marc Berndl, Ondrej Lhotak, Feng Qian, Laurie Hendren and Navindra Umanee, Points-to Analysis using BDDs, Proceedings of the ACM SIGPLAN 2003 Conference on Programming Language Design and Implementation (PLDI 2003), pp. 103-114, San Diego, USA, June 2003.

  51. Ondrej Lhotak and Laurie Hendren, Scaling Java Points-to Analysis using Spark, International Conference on Compiler Construction (CC 2003), pp. 170-184, Warsaw, Poland, April 2003.

  52. Etienne Gagnon and Laurie Hendren, Effective Inline-Threaded Interpretation of Java Bytecode Using Preparation Sequences, International Conference on Compiler Construction (CC 2003), pp. 153-169, Warsaw, Poland, April 2003.

  53. Marc Berndl and Laurie Hendren, Dynamic Profiling and Trace Cache Generation for a Java Virtual Machine, Proceedings of the International Symposium on Code Generation and Optimization (CGO 2003), pp. 276-288, San Francisco, USA, March 2003.

  54. Rhodes Brown, Karel Driesen, David Eng, Laurie Hendren, John Jorgensen, Clark Verbrugge and Qin Wang, STEP: A Framework for the Efficient Encoding of General Trace Data, Proceedings of the ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering, pp. 27-34, Charleston, USA, November 2002.

  55. Ondrej Lhotak and Laurie Hendren, Run-time Evaluation of Opportunities for Object Inlining in Java, Proceedings of the Joint ACM Java Grande - ISCOPE 2002 Conference, pp. 175-184, Seattle, USA, November 2002.

  56. Feng Qian and Laurie Hendren, An Adaptive, Region-based Allocator for Java, Proceedings of the ACM International Symposium on Memory Management, pp. 127-138, Berlin, Germany, June 2002.

  57. Jerome Miecznikowski and Laurie Hendren, Decompiling Java Bytecode: Problems, Traps and Pitfalls, International Conference on Compiler Construction (CC 2002), pp. 111-127, Grenoble, France, April 2002.

  58. Feng Qian, Laurie Hendren and Clark Verbrugge, A Comprehensive Approach to Array Bounds Check Elimination in Java, International Conference on Compiler Construction (CC 2002), pp. 325-342, Grenoble, France, April 2002.

  59. Jerome Miecznikowski and Laurie Hendren, Decompiling Java Using Staged Encapsulation, Workshop on Decompilation Techniques, Stuttgart, Germany. Appeared in Proceedings of the Working Conference on Reverse Engineering, IEEE CS Press, pp. 368-374, October 2001.

  60. Patrice Pominville, Feng Qian, Raja Vallée-Rai, Laurie Hendren and Clark Verbrugge, A Framework for Optimizing Java Using Attributes, Proceedings of the International Conference on Compiler Construction (CC 2001), LNCS 2027, pp. 334-354, April 2001.

  61. Etienne Gagnon and Laurie Hendren, SableVM: A Research Framework for the Efficient Execution of Java Bytecode, Proceedings of the Java Virtual Machine Research and Technology Symposium (JVM '01), pages 27-39, Usenix, Monterey, California, USA, April 2001.

  62. Patrice Pominville, Feng Qian, Raja Vallée-Rai, Laurie Hendren and Clark Verbrugge, A Framework for Optimizing Java Using Attributes, Proceedings of CASCON (IBM Center for Advanced Studies Conference) 2000, pp. 152-169, November 2000.

  63. Vijay Sundaresan, Laurie Hendren, Chrislain Razafimahefa, Raja Vallee-Rai, Patrick Lam, Etienne Gagnon and Charles Godin, Practical Virtual Method Resolution for Java, In Proceedings of the Conference on object-oriented programming, systems, languages, and applications (OOPSLA 2000), Minneapolis, pp. 264-280, October 2000.

  64. Etienne Gagnon, Laurie Hendren and Guillame Marceau, Efficient Inference of Static Types for Java Bytecode, In Proceedings of the Static Analysis Symposium (SAS 2000), Santa Barbara, pp. 199-219, June 2000.

  65. Raja Vallée-Rai, Etienne Gagnon, Laurie Hendren, Patrick Lam, Patrice Pominville and Vijay Sundaresan, Optimizing Java Bytecode using the Soot Framework: Is it Feasible?, In Proceedings of the International Conference on Compiler Construction (CC 2000), Berlin, pp. 18-34, March 2000.

  66. Raja Vallee-Rai, Laurie Hendren, Vijay Sundaresan, Patrick Lam, Etienne Gagnon and Phong Co, Soot - A Java Optimization Framework, In Proceedings of CASCON (IBM Center for Advanced Studies Conference) 99, Toronto, pp. 125-135, November 1999.

  67. Etienne Gagnon and Laurie J. Hendren, SableCC: An Object-Oriented Compiler Framework, Technology of Object-Oriented Languages and Systems 26th International Conference and Exhibition, pp. 140-154, August 1998.

  68. Yingchun Zhu and Laurie J. Hendren, Communication Optimizations for Parallel C Programs, Proceedings of the ACM SIGPLAN '98 Conference on Programming Language Design and Implementation, pp. 199-211, June 1998.

  69. Christopher Lapkowski and Laurie J. Hendren, Extended SSA numbering: Introducing SSA properties to languages with multi-level pointers , International Conference on Compiler Construction, pp. 128-143, April 1998.

  70. Rakesh Ghiya and Laurie J. Hendren, Detecting Parallelism in C Programs with Recursive Data Structures. International Conference on Compiler Construction, pp. 159-173, April 1998.

  71. Rakesh Ghiya and Laurie J. Hendren, Putting Pointer Analysis to Work, Proceedings of the 35th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '98), pp. 121-133, January 1998.

  72. Yingchun Zhu and Laurie J. Hendren, Locality Analysis for Parallel C Programs, Proceedings of Parallel Architectures and Compilation Techniques (PACT '97), pp. 2-13, November 1997.

  73. Xinan Tang, Rakesh Ghiya, Laurie J. Hendren and Guang R. Gao, Heap Analysis and Optimizations for Threaded Programs, Proceedings of Parallel Architectures and Compilation Techniques (PACT '97), pp. 14-25, November 1997.

  74. Laurie J. Hendren, Xinan Tang, Yingchun Zhu, Guang Gao, Xun Xue, Haiying Cai, and Pierre Ouellet, Compiling C for the EARTH multithreaded architecture, Proceedings of Parallel Architectures and Compilation Techniques (PACT '96), pp. 12-23, October 1996.

  75. Clark Verbrugge, Phong Co and Laurie J. Hendren, Generalized Constant Propagation: A Study in C, Proceedings of the 6th International Conference on Compiler Construction (CC '96), Lecture Notes in Computer Science, Volume 1060, Tibor Gyimothy (Editor), pages 74-89, April 1996.

  76. Rakesh Ghiya and Laurie J. Hendren, Is it a Tree, a DAG or a Graph? A Shape Analysis for Heap-Directed Pointers in C, Proceedings of the 23rd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL '96), pages 1-15, January 1996.

  77. Rakesh Ghiya and Laurie J. Hendren, Connection Analysis: A Practical Interprocedural Heap Analysis for C, in Proceedings of the Proceedings of the Eighth Workshop on Languages and Compilers for Parallel Computing (LCPC '95), Lecture Notes in Computer Science, Volume 1033, pages 515-534, August 1995.

  78. Herbert H. J. Hum, Olivier Maquelin, Kevin B. Theobald, Xinmin Tian, Xinan Tang, Guang R. Gao, Phil Cupryk, Nasser Elmasri, Laurie J. Hendren, Alberto Jimenez, Shoba Krishnan, Andres Marquez, Shamir Merali, Shashank S. Nemawarkar, Prakash Panangaden, Xun Xue, and Yingchun Zhu. A design study of the EARTH multiprocessor Proceedings of the IFIP WG 10.3 Working Conference on Parallel Architectures and Compilation Techniques, (PACT '95), pages 59-68, June 1995.

  79. J. Hummel, L. Hendren and A. Nicolau, A Framework for Data Dependence Testing in the Presence of Pointers, Proceedings of the 1994 International Conference on Parallel Processing (ICPP '94), Volume II, pages 216-224, August 1994.

  80. Maryam Emami, Rakesh Ghiya and Laurie J. Hendren, Context-Sensitive Interprocedural Points-to Analysis in the Presence of Function Pointers, Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '94), pp. 242-256, June 1994.

  81. J. Hummel, L. Hendren and A. Nicolau, A General Data Dependence Test for Dynamic, Pointer-Based Data Structures,Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI '94), pp. 218-229, June 1994.

  82. Ana Erosa and Laurie J. Hendren, Taming Control Flow: A Structured Approach to Eliminating Goto Statements, Proceedings of the 1994 IEEE International Conference on Computer Languages (ICCL '94), Toulouse, France, pp. 229-240, May 1994.

  83. Justiani1 and Laurie J. Hendren, Supporting Array Dependence Testing for an Optimizing/Parallelizing C Compiler, Proceedings of the 5th International Conference on Compiler Construction (CC '94), Lecture Notes in Computer Science, Volume 786, Peter A. Fritzson (Editor) pp. 309-323, April 1994.

  84. J. Hummel, L. Hendren and A. Nicolau, A Language for Conveying Aliasing Properties of Dynamic, Pointer-Based Data Structures, Proceedings of the 8th International Parallel Processing Symposium (IPPS '94), pp. 208-216, April 1994.

  85. E. Merlo, J. F. Girard, L. Hendren and R. De Mori, Multi-Valued Constant Propagation for the Reengineering of User Interfaces, Proceedings of Conference on Software Maintenance-1993, Montreal, Quebec, pp. 120-129, September 1993.

  86. Martin C. Carlisle, Anne Rogers, John H. Reppy and Laurie J. Hendren, Early Experiences with Olden, Proceedings of the Sixth Annual Workshop on Languages and Compilers for Parallel Computing, Portland, Oregon, Lecture Notes in Computer Science (LCPC '93), Vol. 768, pp. 1-20, August 1993.

  87. Kevin B. Theobald, Guang R. Gao, and Laurie J. Hendren, Speculative Execution and Branch Predication on Parallel Machines, Proceedings of the 7th ACM International Conference of Supercomputing (ICS '93), Tokyo, Japan, pp. 77-86, July 1993.

  88. Kevin B. Theobald, Guang R. Gao, and Laurie J. Hendren, On the Limits of Program Parallelism and its Smoothability, Proceedings of the 25th Annual International Symposium on Microarchitecture (MICRO '92), pp. 10-19, December 1992. (A longer version in ACAPS Technical Memo 40, School of Computer Science, McGill University, June 1992.)

  89. Laurie J. Hendren, Guang R. Gao, Erik R. Altman, and Chandrika Mukerji, A Register Allocation Framework Based on Hierarchical Cyclic Interval Graphs, Proceedings of the International Conference on Compiler Construction (CC '92), Lecture Notes in Computer Science, Vol. 641, U. Kastens and P. Pfahler (Editors), pp. 176-191, October 1992.

  90. J. Hummel, L.J. Hendren, and A. Nicolau, Applying an Abstract Data Structure Description Approach to Parallelizing Scientific Pointer Programs, International Conference on Parallel Processing, (Volume II - software) (ICPP '92), pp. 100-104, Aug. 1992.

  91. Laurie J. Hendren, Chris Donawa, Maryam Emami, Guang R. Gao, and Bhama Sridharan. Designing the McCAT Compiler Based on a Family of Structured Intermediate Representations, Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing (LCPC '92), New Haven, Connecticut, Lecture Notes in Computer Science, Vol. 757, Utpal Banerjee, David Gelernter, Alex Nicolau and David Padua (Editors), pp. 406-420, August 1992.

  92. Anne Rogers, John H. Reppy, and Laurie J. Hendren. Supporting SPMD Execution for Dynamic Data Structures, Proceedings of the 5th International Workshop on Languages and Compilers for Parallel Computing (LCPC '92), New Haven, Connecticut, Lecture Notes in Computer Science, Vol. 757, Utpal Banerjee, David Gelernter, Alex Nicolau and David Padua (Editors), pp. 192-207, August 1992.

  93. Laurie J. Hendren, Joseph Hummel, and Alexandru Nicolau, Abstractions for Recursive Pointer Data Structures: Improving the Analysis and Transformation of Imperative Programs, Proceedings of the ACM SIGPLAN '92 Conference on Programming Language Design and Implementation (PLDI '92), pp. 249-260, June 1992.

  94. G. Gao, L. Hendren, P. Panangaden, M. Feeley, L. Tao, M. Hancu, J. Lebensold and V. Van Dongen, ``Towards a Portable Parallel Programming Environment", Proceedings of the Supercomputing Symposium '92, June 1992.

  95. Weiren Ding and Laurie J. Hendren, SELSYN-C: A Self-Synchronizing Parallel Programming Language, Proceedings of the 4th International Conference on Computing and Information, pp. 135-138, May 1992.

  96. Laurie J. Hendren and Guang R. Gao, Designing Programming Languages for Analyzability: A Fresh Look at Pointer Data Structures, Proceedings of the 4th IEEE International Conference on Computer Languages (ICCL '92), pp. 242-251, April 1992.

  97. L.J. Hendren and A. Nicolau, Parallelizing Programs with Recursive Data Structures, Proceedings of the International Conference on Parallel Processing (ICCP '89), pp. 49-56 (volume II - software), August 1989.

  98. L.J. Hendren and A. Nicolau, Interference Analysis Tools for Parallelizing Programs with Recursive Data Structures, Proceedings of the International Conference of Supercomputing (ICS '89), pp. 205-214, June 1989.

  99. L.J. Hendren, RIPO - An Automated Prototyping Tool Based on Nested Arrays, APL84 Conference Proceedings, APL Quote Quad Volume 14 Number 4, pp. 181-184, June 1984.

Recent Workshop Presentations by McLAB group members

  1. Sameer Jagdale (supervised by Laurie Hendren), VeloCty: An optimizing static compiler for Matlab and NumPy, 13th Workshop on Compiler-Driven Performance, associated with CASCON 2014, November 2014.

  2. Sujay Kathrotia (supervised by Laurie Hendren), McNumJS: Enabling Fast Numeric Computations for JavaScript, 13th Workshop on Compiler-Driven Performance, associated with CASCON 2014, November 2014.

  3. Xu Li and Laurie Hendren, Mc2For: A MATLAB to Fortran 95 Compiler, 12th Workshop on Compiler-Driven Performance, associated with CASCON 2013, November 2013.

  4. Vineet Kumar and Laurie Hendren, MiX10: Compiling MATLAB for High Performance Computing via X10, 12th Workshop on Compiler-Driven Performance, associated with CASCON 2013, November 2013.

  5. Rahul Garg and Laurie Hendren, Velociraptor: A compiler toolkit for compiling numerical programs to hybrid CPU/GPU systems, 8th Workshop on Challenges for Parallel Computing, associated with CASCON 2013, November 2013.

Other Publications - Compilers

  1. Rahul Garg, Sameer Jagdale and Laurie J. Hendren, Velociraptor: a compiler toolkit for array-based languages targeting CPUs and GPUs, Proceedings of the 2015 ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming (ARRAY@PLDI), pp 19-24, June 2015.

  2. Rahul Garg and Laurie Hendren, Just-in-time shape inference for array-based languages, Proceedings of the 2014 ACM SIGPLAN International Workshop on Libraries, Languages and Compilers for Array Programming (ARRAY@PLDI), Edinburgh, United Kingdom, pp. 50-55, June 2014.

  3. Patrick Lam, Eric Bodden, Ondrej Lhotak and Laurie Hendren, The Soot framework for Java program analysis: a retrospective, Proceedings of the Cetus Users and Compiler Infrastructure Workshop (in conjunction with PACT 2011), 8 pages, October 2011.

  4. Laurie Hendren, Jesse Doherty, Anton Dubrau, Rahul Garg, Nurudeen Lameed, Soroush Radpour, Amina Aslam, Toheed Aslam, Andrew Casey, Maxime Chevalier Boisvert, Jun Li, Clark Verbrugge and Olivier Savary Belanger, McLAB: enabling programming language, compiler and software engineering research for MATLAB, Proceedings of the ACM International Conference on Object Oriented Programming Systems, Languages and Applications Companion (abstract of poster), pp. 195-196, October 2011.

  5. Laurie Hendren, Typing aspects for MATLAB, Proceedings of the Sixth Annual Workshop on Domain-specific Aspect Languages (at AOSD 2011), pp. 13-18, March 2011. (International Workshop)

  6. Eric Bodden, Laurie Hendren, Patrick Lam, Ondrej Lhotak and Nomair A. Naeem, Collaborative runtime verification with tracematches, Proceedings of the 7th workshop on Runtime Verification at the 6th International Conference on Aspect-Oriented Software Development (RV 2007), LNCS 4839, March 2006. (Proceedings published in 2007).

  7. Pavel Avgustinov, Julian Tibble, Eric Bodden, Laurie J. Hendren, Ondrej Lhotak, Oege de Moor, Neil Ongkingco and Ganesh Sittampalam, Efficient trace monitoring, pp. 685-686, OOPSLA Companion (abstract of poster), pp. 685-686, October 2006.

  8. Pavel Avgustinov, Eric Bodden, Elnar Hajiyev, Laurie J. Hendren, Ondrej Lhotak, Oege de Moor, Neil Ongkingco, Damien Sereni, Ganesh Sittampalam, Julian Tibble and Mathieu Verbaere, Aspects for Trace Monitoring, paper associated with invited talk by Oege de Moor, pp. 20-39, FATES/RV, August 2006.

  9. Pavel Avgustinov, Aske Simon Christensen, Laurie Hendren, Sascha Kuzins, Jennifer Lhotak, Ondrej Lhotak, Oege de Moor, Damien Sereni, Ganesh Sittampalam and Julian Tibble abc: The AspectBench Compiler for AspectJ, paper associated with invited talk by Oege de Moor, International Conference on Generative Programming and Component Engineering (GCPE 2005), pages 10-15, September 2005.

  10. Laurie J. Hendren, Maryam Emami, Rakesh Ghiya, and Clark Verbrugge, A Practical Context-Sensitive Interprocedural Analysis for C Compilers, ACAPS Technical Memo 72, School of Computer Science, McGill University, July 1993.

  11. ZhiPing Qiu, Laurie J. Hendren, and Behcet Sarikaya, The Design and Implementation of a Compiler for Conformance Testing, Proceedings of the Poster Session, International Conference of Compiler Construction, Universität-Gesamthochschule-Paderborn, Report 103, October 1992.

  12. Laurie J. Hendren, Parallelizing Programs with Recursive Data Structures, Technical Report TR 90-1114 (Ph.D. Thesis), Cornell University, April 1990.

  13. Laurie J. Hendren, Recursive data structures and parallelism detection, Technical Report TR 88-924, Cornell University, June 1988.

  14. Laurie J. Hendren, Alex Nicolau, Jon Solworth and Patrick Xavier, Low-level programming for a massively fine-grain computer: The Microflow Approach, Technical Report TR87-806, Cornell University, March 1987.

  15. Laurie J. Hendren. ISON: An Introductory Subset of Nial, M.Sc. Thesis, Queen's University, 1984.

  16. R. Black, P.J. Nelson and L.J. Hendren, NRC Turtle Graphics, Proceedings of the Tutorial and Workshop on Computers and the Handicapped, pp. 89-93, 1982.

Other Publications - Health Informatics and Oncology

  1. Faria R, Law S, Hijal T, Zidulka J, Magalhaes M, Mazaniello M, Ferland M, Hendren L, Michaels G, Potas D and Volet G, Looking Forward: Co-designing and evaluating a cancer survivorship program, CAHSPR 2017, May 24-27, 2017, Toronto. (Oral presentation)

  2. Faria R, Law S, Hijal T, Zidulka J, Magalhaes M, Mazaniello M, Ferland M, Hendren L, Michaels G, Potas D, and Volet G, Looking Forward: Co-designing a psychosocial information program for patients completing active treatment, Canadian Partnership Against Cancer (CPAC) Conference 2017, April 7-8, 2017,Toronto. (Poster presentation)

  3. Faria R, Law S, Hijal T, Zidulka J, Magalhaes M, Mazaniello M, Ferland M, Hendren L, Michaels G, Potas D, Volet G and Boisvert-Huneault, C, Looking Forward: Co-designing a cancer survivorship program, Rti3 - Radiation Therapy Conference, Toronto, March 2017. (Oral presentation)

  4. Faria R, Law S, Hijal T, Zidulka J, Magalhaes M, Mazaniello M, Ferland M, Hendren L, Michaels G, Potas D, and Volet G, Looking Forward: Co-designing a psychosocial information program for patients completing active treatment, 14th American Psychosocial Oncology Society Annual Conference 2017, February 15-18, 2017, Orlando FL. (Poster presentation)

  5. Faria R, Law S, Hijal T, Zidulka J, Magalhaes M, Mazaniello M, Ferland M, Hendren L, Michaels G, Potas D, and Volet G, La co-conception d'un programme de soutien pour les survivants du cancer, Congrès Direction Générale de Cancérologie 2016 - Tourné vers l'avenir, November 18, 2016, Montreal. (Poster presentation)

  6. Faria R, Law S, Hijal T, Zidulka J, Magalhaes M, Mazaniello M, Ferland M, Hendren L, Michaels G, Potas D, and Volet G, Looking Forward: Co-designing a cancer survivorship program, Rossy Cancer Network (RCN) Annual Retreat, Montreal, September 2016. (Poster presentation)

  7. Faria R, Law S, Hijal T, Zidulka J, Magalhaes M, Mazaniello M, Ferland M, Hendren L, Michaels G, Potas D, and Volet G, Looking Forward: Co-designing a psychosocial information program for patients completing active treatment, International Psycho Oncology Society (IPOS), Dublin, October 2016. (Poster presentation)

  8. Ackeem Joseph, David Herrera, Tarek Hijal, Laurie Hendren, Alvin Leung, Justin Wainberg, Marya Sawaf, Maxim Gorshkov, Robert Maglieri, Mehryar Keshavarz, John Kildea, Predicting waiting times in Radiation Oncology using machine learning, Annual Scientific Meeting of the Canadian Organization of Medical Physicists, St John's, NL, June 2016.

  9. Ackeem Joseph, David Herrera, John Kildea, Tarek Hijal, Laurie Hendren, Opal: the Oncology Patient Application, Annual Scientific Meeting of the Canadian Organization of Medical Physicists, St John's, NL, June 2016.

  10. Ackeem Joseph, David Herrera, Tarek Hijal, Laurie Hendren, Alvin Leung, Justin Wainberg, Marya Sawaf, Maxim Gorshkov, Robert Maglieri, Mehryar Keshavarz, John Kildea, Predicting waiting times in Radiation Oncology using machine learning, 18th International Conference on the use of Computers in Radiotherapy, London, England, June 2016. (Poster presentation)

  11. David Hererra, Ackeem Joseph, Tarek Hijal, Laurie Hendren, Alvin Leung, Marya Sawaf, Maxim Gorshkov, Mehryar Keshavarz, John Kildea, Opal: the Oncology Patient Application, 18th International Conference on the use of Computers in Radiotherapy, London, England, June 2016. (Oral presentation)

  12. Rosana Faria, Susan Law, Tarek Hijal, Joan Zidulka, Manon Allard, George Michaels, Monique Ferland, Danielle Potas, Laurie Hendren, Givette Volet, Klaudijus Kuncevicius, and Mona Magalhaes, Looking Forward: Co-designing a cancer survivorship program, poster presentation, Canadian Association for Health Services and Policy Research (CAHSPR), May 2016. (Poster presentation)

  13. J. Kildea, L. Hendren, A. Joseph, D. Herrera, M. Gorshkov, M. Keshavarz, A. Leung, M. Sawaf, J. Wainberg and T. Hijal, Realistic knowledge-based waiting times for radiotherapy patients - addressing the pain of waiting, Accreditation Canada's 5th Annual Quality Conference, Montreal, April 2016. (Poster presentation)

  14. Rosana Faria, Susan Law, Tarek Hijal, Joan Zidulka, Manon Allard, George Michaels, Monique Ferland, Danielle Potas, Laurie Hendren, Givette Volet, Klaudijus Kuncevicius, and Mona Magalhaes, Looking Forward: Intervention design and pilot study of a supportive re-entry program tailored by and for patients completing cancer treatment, poster presentation, Canadian Association of Psychosocial Oncology (CAPO), April 2015. (Poster presentation)

Software Systems

Importance of Experimental Software Systems

In addition to publications, the kind of experimental work I do also requires the development of large and complex software systems. It is my view that the development of such systems in an integral part of the design of new analyses and approaches, and the design of such systems is often a research project itself. Such an experimental system is of critical importance in demonstrating the usefulness of a technique or approach and also can provide the foundations for future research both in my own research group and for research groups around the world. Thus, whenever possible, we provide our tools under open source licenses.

Major Software Systems

  1. McLAB, a compiler and VM toolkit for scientific languages, including a front-end toolkit, a VM with JIT and a MATLAB-to-Fortran compiler
    http://www.sable.mcgill.ca/mclab.

    The McLab framework is a project for developing both toolkits and new analyses and techniques for dynamic scientific programming languages like Matlab. There is currently a real lack of such toolkits and it is our hope that by providing such a framework we can stimulate academic research into dynamic scientific language design and associated virtual machines and compilers.

    Currently the framework is being used by my research group and a graduate class. We have released the first version of the framework under an open source license. We have also released the AspectMatlab compiler.

  2. abc, the AspectBench Compiler, developed with Oxford, Aarhus and Waterloo,
    http://www.sable.mcgill.ca/abc/.

    The abc framework has become a popular framework for researchers designing and implementing new extensions to the aspect-oriented language AspectJ. Some of these extensions, which are also publicly-available are listed at http://www.sable.mcgill.ca/abc/projectsexts.

  3. Soot, a Java Bytecode Analysis and Transformation Framework,
    http://www.sable.mcgill.ca/soot/.

    Soot is probably our most widely used toolkit. It is not uncommon to see at least a couple of papers at each compiler conference which have used Soot as their main toolkit. It is also quite often used in advanced compiler courses. A wiki listing some users is found at https://svn.sable.mcgill.ca/wiki/index.cgi/SootUsers. Although this is just a voluntary list (and thus does not include many users) it does give a good flavour of the wide variety of research that uses Soot.

Other Software Systems

  1. Metalexer, an extensible lexer generator,
    http://www.sable.mcgill.ca/metalexer.

    Metalexer was developed to fulfill the need for a lexer generator that was modular and could be used naturally in extensible toolkits (like McLab and abc).

  2. SableCC, the Sable Research Group's Compiler Compiler.

    SableCC was started as the M.Sc. research project of Etienne Gagnon. Etienne is now a professor at UQAM and continued the development. His current web site is http://sablecc.org.

  3. SableVM, a portable Java Virtual Machine,
    http://www.sablevm.org/.

  4. Ashes, a collection of Java Benchmarks and Scripts,
    http://www.sable.mcgill.ca/ashes/.

  5. EVolve, an Extensible Software Visualization Framework,
    http://www.sable.mcgill.ca/evolve/.

  6. STEP, an Extensible Program Trace Encoding,
    http://www.sable.mcgill.ca/step/

  7. PTA-BDD, a Points-to Analysis using BDDs,
    http://www.sable.mcgill.ca/bdd/

  8. Paddle, a BDD-based Context-Sensitive Interprocedural Analysis for Java,
    http://www.sable.mcgill.ca/paddle/

  9. Dava, a Tool-Independent Decompiler for Java,
    http://www.sable.mcgill.ca/dava/

  10. JBCO, the Java Bytecode Obfuscator,
    http://www.sable.mcgill.ca/JBCO/

  11. AIA, Aspect Impact Analysis,
    http://www.sable.mcgill.ca/aia/

Invited Lectures, Talks and Tutorials

Teaching Experience

I have taught courses at all levels from introductory programming courses for a broad audience to very specialized graduate courses. I take my teaching duties as seriously as my research duties and find that the research inspires new content and projects for my courses and conversely sometimes the courses inspire new research projects.

Courses taught at McGill

Courses taught outside McGill

Graduate Students

Typically I have a group of 7-10 graduate students and additionally supervise a large number of undergraduate research projects, both within compilers and health informatics. There are usually significantly more M.Sc. students than Ph.D. students. The M.Sc. students are strong students, they complete quite impressive M.Sc. theses, and most of them co-author at least one research paper. However, many such students prefer to go on to industrial jobs after their M.Sc. studies and their graduate studies is often very useful for them in finding exciting employment opportunities and this also provides industry with well qualified students.

This mix of students, with a considerable number of M.Sc. students, means that my research projects must be quite structured, so that several M.Sc. theses can fit together towards a larger overall goal.

Many of my students have gone on to work at places like IBM Toronto and quite a few have been key players in the compiler groups there, participating in the design and implementation of important new projects.

I am also quite proud of my students who have gone on the be faculty members. Currently Etienne Gagnon is at UQAM, Bruno Dufour was at the University of Montreal, Ondrej Lhotak is at Waterloo and Patrick Lam is at Waterloo. This means that there are now four further active compiler groups at Canadian Universities, leading to more training of qualified compiler people.

Refer to Table 1 for a list of students I currently supervise. Refer to Tables 2, 3 and 4 for a summary of past students and postdocs supervised.


Table 1: Current Graduate Students
Current Graduate Students
Hanfeng Chen 15- Ph.D. Combining array languages and in-memory databases
Prabhjot Sandu 15- Ph.D. Efficient Sparse Matrices for the Web
Erick Lavoie 13- Ph.D. Concurrent Execution of MATLAB via Web technologies
David Herrera 17- M.Sc. Using WebAssembly for efficient execution of array-based prorams
Alexander Krolik 16- M.Sc. GPU JIT compiler
Steven Thephsourinthone 16- M.Sc. Type inference for MATLAB
Fabrice Anon 15- M.Sc. OpenCL recompiler
Faiz Khan 14- M.Sc. Automatic input and test generation for MATLAB
Recently Graduated Students
Rahul Garg 09-15 Ph.D. A toolkit for building dynamic compilers for array-based languages targeting CPUs and GPUs
Nurudeen Lameed 08-13 Ph.D. Dynamic compiler optimization techniques for MATLAB
Vincent Foley 13-16 M.Sc. Static translation of MATLAB to JavaScript
Ismail Badawi 12-15 M.Sc. McIDE: a MATLAB IDE powered by dynamic analysis
Sameer Jagdale 12-15 M.Sc. Velocty: An Optimizing Compiler for MATLAB and Python
Sujay Kathrotia 12-15 M.Sc. McNumJS: A JavaScript Library for Numerical Computations
Andrew Bodzay 11-14 M.Sc. AspectMatlab++: Developing an Aspect-oriented Language for Scientists
Mathieu Dubet 11-14 M.Sc. Efficient JIT Compilation of MATLAB
Xu Li 11-14 M.Sc. Mc2For: A MATLAB to Fortran95 Compiler
Vineet Kumar 11-14 M.Sc. MiX10: Compiling MATLAB to X10 for High Performance


Table 2: Graduated M.Sc., Ph.D. Students and Post-Doctoral Researchers (2010 to present)
Post Doctoral Researchers (2010-present)
Guang Hu 13-14 Postdoc Translating MATLAB to Java and Android bytecode
Graduated Ph.D. Students (2010-present)
Rahul Garg 09-15 Ph.D. A toolkit for building dynamic compilers for array-based languages targeting CPUs and GPUs
Nurudeen Lameed 08-13 Ph.D. Dynamic compiler optimization techniques for MATLAB
Graduated M.Sc. Students (2010-present)
Vincent Foley 13-16 M.Sc. Static translation of MATLAB to JavaScript
Ismail Badawi 12-15 M.Sc. McIDE: a MATLAB IDE powered by dynamic analysis
Sameer Jagdale 12-15 M.Sc. Velocty: An Optimizing Compiler for MATLAB and Python
Sujay Kathrotia 12-15 M.Sc. McNumJS: A JavaScript Library for Numerical Computations
Andrew Bodzay 11-14 M.Sc. AspectMatlab++: Developing an Aspect-oriented Language for Scientists
Mathieu Dubet 11-14 M.Sc. Efficient JIT Compilation of MATLAB
Xu Li 11-14 M.Sc. Mc2For: A MATLAB to Fortran95 Compiler
Vineet Kumar 11-14 M.Sc. MiX10: Compiling MATLAB to X10 for High Performance
Soroush Radpour 09-11 M.Sc. Program Understanding and Refactoring Tools for MATLAB
Anton Dubrau 09-11 M.Sc. Advanced Techniques for Matlab-to-Fortran Translation
Jesse Doherty 08-11 M.Sc. McSAF: An Extensible Static Analysis Framework for the MATLAB Language
Amina Aslam 08-10 M.Sc. McFLAT: A Profile-based Framework for MATLAB Loop Analysis and Transformations
Toheed Aslam 08-10 M.Sc. AspectMatlab: An Aspect-Oriented Scientific Programming Language



Table 3: Graduated M.Sc., Ph.D. Students and Post-Doctoral Researchers (2000 to 2009)
Post Doctoral Researchers (2000-2009)
Patrick Lam 2007 Postdoc. Efficient Runtime Monitors
Antoine Mine 2005 Postdoc. Purity Analysis
Graduated Ph.D. Students (2000-2009)
Eric Bodden 06-09 Ph.D. Verifying Finite-State Properties of Large-Scale Programs
Ondrej Lhotak 03-06 Ph.D. Program Analysis Using Binary Decision Diagrams
Feng Qian 01-05 Ph.D. Runtime techniques and interprocedural analysis in Java Virtual Machines
Etienne Gagnon 98-02 Ph.D. A Portable Research Framework for the Execution of Java Bytecode
Yingchun Zhu 94-00 Ph.D. Compiling for Multi-threaded Architectures
Graduated M.Sc. Students (2000-2009)
Maxime Chevalier-Boisvert 07-09 M.Sc. McVM - an Optimizing Virtual Machine for the MATLAB Programming Language (cosupervised with Clark Verbrugge)
Jun Li 07-09 M.Sc. McFOR: a MATLAB-to-Fortran95 Compiler
Andrew Casey 07-09 M.Sc. The MetaLexer Lexer Specification Language
Dehua Zhang 06-08 M.Sc. Aspect Impact Analysis
Michael Batchelder 05-06 M.Sc. Java Bytecode Obfuscation
Nomair Naeem 03-06 M.Sc. Programmer-friendly decompiled Java
Jingwu Li 04-06 M.Sc Improving the Compiling Speed of the AspectBench Compiler (project)
Jennifer Lhotak 04-05 M.Sc. Visualization Tools for Optimizing Compilers
Chris Goard 02-05 M.Sc. Measuring and Improving the Runtime Behaviour of AspectJ Programs
Navindra Umanee 01-05 M.Sc. Shimple: An Investigation of Static Single Assignment Form
Anatole Le 02-05 M.Sc. Using Inter-Procedural Side-Effect Information in JIT Optimizations
David Belanger 02-05 M.Sc. SableJIT: a retargetable just-in-time compiler (co-supervised with E. Gagnon)
Bruno Dufour 02-04 M.Sc. Objective Quantification of Program Behaviour Using Dynamic Metrics (co-supervised with C. Verbrugge)
Marc Berndl 01-03 M.Sc. Dynamic Profiling and Trace Cache Generation for a Java Virtual Machine
John Jorgensen 00-03 M.Sc. Exceptions in Java (M.Sc. Project)
Ondrej Lhotak 01-03 M.Sc. SPARK: A flexible points-to analysis framework for Java
Rhodes Brown 00-03 M.Sc. STEP: A Framework for the Efficient Encoding of General Trace Data
Jerome Miecznikowski 99-03 M.Sc. New algorithms for decompiling Java and their implementation in Soot
Qin Wang 01-02 M.Sc. EVolve: An Extensible Software Visualization Framework (co-supervised with K. Driesen)
David Eng 00-02 M.Sc. Combining Static and Dynamic Data in Code Visualization
Feng Qian 99-01 M.Sc. A Comprehensive Approach to Array Bounds Check Elimination in Java
Raja Vallée-Rai 97-00 M.Sc. Soot: An Optimization Framework for Java Bytecode
Chrislain Razafimahefa 96-00 M.Sc. Practical Side-effect analysis for Java



Table 4: Graduated M.Sc., Ph.D. Students and Post-Doctoral Researchers (1990-1999)
Post Doctoral Researchers (1990-1999)
Marc Pouzet 95-96 Postdoc. Instruction Scheduling via Fold/Unfold
Graduated Ph.D. Students (1990-1999)
Rakesh Ghiya 96-99 Ph.D. Putting Pointer Analysis to Work
Graduated M.Sc. Students (1990-1999)
Vijay Sundaresan 97-99 M.Sc. Practical Techniques for Virtual Call Resolution in Java
Etienne Gagnon 94-99 M.Sc. Sable CC Framework
Laleh Tajrobehkar 97-99 M.Sc. JJC - A Java to Jimple Compiler (M.Sc. Project)
Phong Co 95-99 M.Sc. Obfuscating Java Bytecode (M.Sc. Project)
Greg Ward 93-98 M.Sc Bibliography Tool (M.Sc. Project)
Emily Ezust 94-97 M.Sc. Pre-spilling using interval graphs (M.Sc. Project)
C. Lapkowski 94-97 M.Sc. Symbolic Dependence Tests and Extended SSA Numbering
Guirlyn Olivar 95-97 M.Sc. Fast Points-to Analysis for McCAT (M.Sc. Project)
Shereen Ghobrial 95-97 M.Sc. Shared Variables in EARTH-C
Jean M. Roque 94-95 M.Sc. Implementation of Independent Loops in High Performance C (co-supervised)
Yingwei Zhang 93-95 M.Sc. Instruction Scheduling and Register Allocation for the McCAT Compiler
Ana Maria Erosa 93-95 M.Sc. A Goto-elimination Method and its Implementation for the McCAT C Compiler
Justiani 93-95 M.Sc. A Practical Array Dependence Analysis for an Optimizing/Parallelizing C Compiler
Jing Wu 91-95 M.Sc. A Parallel Flow Analysis Method on Structured Programming Languages
Rakesh Ghiya 93-95 M.Sc. Practical Techniques for Interprocedural Heap Analysis
Chris Donawa 92-94 M.Sc. The Design and Implementation of a Structured Backend for the McCAT C Compiler
Maryam Emami 91-93 M.Sc. A Practical Interprocedural Alias Analysis for an Optimizing/Parallelizing C Compiler
Sumithra Jagannath 90-92 M.Sc. Measuring Dynamic Program Characteristics (M.Sc. Project)
Matilda Leung 90-92 M.Sc. The Design and Implementation of the LAST Interpreter (M.Sc. Project)
Weiren Ding 90-92 M.Sc. SELSYN-C: A Self-Synchronizing Parallel Programming Language
Bhama Sridharan 90-92 M.Sc. An Analysis Framework for the McCAT Compiler
ZhiPing Qiu 89-92 M.Sc. The Design and Implementation of a Compiler for Conformance Testing


Recent undergraduate research projects

Administrative Duties

Current Administrative Duties

Past Administrative Duties

Professional Activities

Reviewing

Conference Program Chairs

I have been the Program Chair of the two major international compiler conferences. I believe that I am the only Canadian to have been Program Chair of both of them. Given the importance of conferences in my field it is a challenging job which is given to the leaders in the field.

Conference Program Committee Memberships

I been a program committee member on all of the big ACM conferences in my field and related fields. Program committee membership usually involves serious reviewing of 15-30 papers, reacting to author responses, and participating in a program committee meeting which is used to choose the papers to accept.

Reviewer - Journals

Reviewer - Conferences

Other Professional Activities

About this document ...

This document was generated using the LaTeX2HTML translator Version 2008 (1.71)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 -local_icons cv2.tex

The translation was initiated by Laurie HENDREN on 2017-08-19


Footnotes

... Justiani1
Justiani has only one name.
Laurie HENDREN 2017-08-19