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