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
Alexander Krolik 16- Ph.D. GPU JIT compiler (co-advised Verbrugge)
Hanfeng Chen 15- Ph.D. Combining array languages and in-memory databases (co-advised Kemme)
Prabhjot Sandhu 15- Ph.D. Efficient Sparse Matrices for the Web (co-advised Verbrugge)
Erick Lavoie 13- Ph.D. Personal Volunteer Computing (part-time)
Hongji Chen 18- M.Sc. Optimization framework for WebAssembly
David Herrera 17- M.Sc. Using WebAssembly for efficient execution of array-based prorams
Steven Thephsourinthone 16- M.Sc. Type inference for MATLAB
Faiz Khan 14- M.Sc. Automatic input and test generation for MATLAB (part-time)
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


Laurie HENDREN 2019-02-17