The McGill Software Technology Lab

The McGill Software Technology Lab is jointly led by Profs. Jin Guo and Martin Robillard.

We investigate how to facilitate the discovery and acquisition of crucial technical, design, and domain knowledge to support the development of complex software systems. Our research areas include automated documentation generation, software traceability, API usability, advanced programming tools, and computer science education. We work at the intersection of software engineering, artificial intelligence, and human-computer interaction.

Past and present members of the McGill Software Technology Lab, September 2023.
Past and present members of the McGill Software Technology Lab, September 2023.

Current Students

Portrait of Mathieu Nassif

Mathieu Nassif Ph.D. Student

I am a Ph.D. student in Computer Science at McGill University. My research focuses on the extraction, representation, and manipulation of knowledge in software systems to optimize the contribution of developers. I received my M.Sc. in Computer Science from McGill University and my B.Sc. in Mathematics from Université de Montréal.

Portrait of Deeksha Arya

Deeksha Arya Ph.D. Student (co-supervised with Jin Guo)

I am a PhD Student in Computer Science at McGill University (and a professional dancer!). My research is on understanding how learning resources can cater to the different considerations people have when searching for software-related information online. I am also interested in exploring how we can leverage these resources to teach students without access to systematic computer science education, about software engineering concepts.

Portrait of Bhagya Chembakottu

Bhagya Chembakottu Ph.D. Student

I'm currently pursuing a Ph.D. in Computer Science at McGill University, where my studies revolve around software engineering and its optimization, alongside in relation to its intersection with machine learning. I hold an M.Sc. in Computer and Software Engineering from Polytechnique Montréal.

Portrait of Marco Raglianti

Marco Raglianti Visiting Ph.D. Student

I am a research assistant and Ph.D. candidate in Software Engineering in the REVEAL group at the Software Institute, USI, Lugano, Switzerland, under the supervision of Prof. Dr. Michele Lanza. My research focuses on mapping and reifying the documentation landscape, the evolving and heterogenous multitude of documentation sources software systems. I received my Bachelor and M.Sc. in Computer Science from Università di Pisa, Italy.

Portrait of Ziming Wang

Ziming Wang Master's Student

I received my B.A.Sc. in Computer Engineering at University of Ottawa. My research interests are in the fields of Software Engineering and Machine Learning.

Portrait of Linh Nguyen

Linh Nguyen Master's Student

I am a Master's student in Computer Science, and I received my Bachelor in Computer Science from Eindhoven University of Technology in the Netherlands. I am interested in the field of Software Engineering and Human-Computer Interaction, and I am also curious about the applications of Artificial Engineering in the research of the two mentioned fields.

Portrait of Lanese Trimmigham

Lanese Trimmigham Master's Student

I am a Computer Science Master's student with a Bachelor's degree from the University of the West Indies, Cave Hill. During my studies, I participated in exchange programs at Queen's University and the University of Merced, California. My research interest center around software engineering and human-computer interaction.

Portrait of Jun Soo Kim

Jun Soo Kim Undergraduate Research Assistant

I am a third year B.A. student at McGill studying Computer Science. My interest lies in Software Engineering, and I'm keen to learn about all aspects of the Software Development process.

Portrait of Shushi Huang

Shushi Huang Undergraduate Research Assistant

I am a third-year Computer Science McGill undergraduate student doing a minor in Neuroscience. I am interested to explore the intersection of neuroscience and software engineering.


An asterisk (*) indicates a co-supervised student.


Name Period Main Contribution Current Position
Mohamed Boussaa* 2017-2018 Automatic Failure Localization and Diagnosis for Cloud Computing Applications R&D Engineer at ActiveEon, France
Christoph Treude 2012-2015 Extracting Development Tasks to Navigate Software Documentation Senior Lecturer at the University of Melbourne
Bradley Cossette 2014-2015 Eliciting User Interests in Reviews of Complex Products Advanced Data Analytics and Insights Manager at General Motors
Peter C. Rigby 2011-2012 Discovering Essential Code Elements in Informal Documentation Associate Professor at Concordia University


Name Year Thesis Current Position
Annie Ying 2016 Code Fragment Summarization Lead Data Scientist at startup EquitySim
Barthélémy Dagenais 2012 Analysis and Recommendations for Developer Learning Resources CTO & Partner at Power Go
Ekwa Duala-Ekoko 2012 Using Structure-Based Recommendations to Facilitate API Learnability. Senior Director of Engineering at Fuze

M.Sc. Theses

Name Year Thesis Current Position
Alexa Hernandez 2023 Understanding Test Convention Consistency as a Dimension of Test Quality Software Development Engineer at Amazon
Deeksha Arya* 2019 Exploring the Correspondence between Types of Documentation for Application Programming Intefaces Ph.D. Student at McGill
Mathieu Nassif 2018 Embedding Constructural Documentation in Unit Tests Ph.D. Student at McGill
Inderjot Kaur Ratol 2017 Detecting Fragile Comments Senior Software Developer at OneSpan
Gayane Petrosyan 2013 Discovering Information Relevant to API Elements Using Text Classification Software Developer at Google
Yam Chhetri 2012 Classifying and Recommending Knowledge in Reference Documentation to Improve API Usability Software Engineer at Meta
Tristan Ratchford 2011 Creating Application Programming Interface Code Templates from Usage Patterns Engineering Manager at Datadog
David Kawrykow 2011 Enabling Precise Interpretations of Software Change Data Vice President (Technology) at Morgan Stanley
Isaac Yuen 2009 Improving Software Modularity Through Crosscutting Concern Extraction Senior Staff Product Manager at Tesla
Punit Agrawal* 2009 Program Navigation Analysis Using Machine Learning Kernel Engineer at ByteDance
Barthélémy Dagenais 2008 Recommending Adaptive Changes for Framework Evolution CTO & Partner at Power Go
Olivier Giroux 2007 Detecting Increases in Feature Coupling using Regression Tests Director of GPU Architecture at Apple

M.Sc. Projects

Name Year Project Title
Louis-Bertrand Varin 2022 A Study of Language-Independent Package Management With Flatpak
Paul Husek 2017 Automated Processing of Stack Overflow Posts
Senjuti Kundu 2017 Relating Stereotypes and Documentation Patterns in API Documentation: A Case Study
Mangala Gowri Krishnamoorthy 2015 R Helper - a Learning Resource for the R Language
Imran Majid 2006 NaCIN - Tool Support for Program Navigation-Based Concern Inference

Research Assistants

Name Period Project Title
Alex Armenciu 2023 (S) User Tracking on Health Information Portals
Emily Shannon 2023 (S) Casdoc 3.1
Lawrence Berardelli 2022 (S) Correspondence between Software Documentation Resources
Zara Horlacher 2021 (WSF) Dynamic Developer Documentation
Elby MacKenzie 2021 (S) Test Suite Quality Analysis
Olivier Grenier-Leboeuf 2020 (S) Commenting Practices in Open Source Java Software
Madonna Huang 2020 (S) Advanced Sequence Diagram Features for JetUML
Alison Li 2019 (SF) Opportunistic Concept Acquisition in Programming
Jiajun Chen 2016-2018 Reverse Engineering Unit Tests. "Debugging Support for Cloud Applications"
Caroline Berger 2017 Programming Environment for Children
Bejal Lewis 2016-2017 Tool Support for API Documentation
Xiaoye Ding 2016 Reverse Engineering Unit Tests
Sahas Leelodharry 2016 Comment Mining Infrastructure
Paul Husek 2016 Recovering Traceability Links Between Test and Project Methods
Devon Ochman 2015 TaskNav: A Search Engine Specialized for API Documentation
Mathieu Nassif 2013-2015 Automatically Categorizing Software Technologies
Kelley Zhao 2015 TaskNav: A Search Engine Specialized for API Documentation
Mathieu Sicard 2014 TaskNav: Task-based Navigation of Software Documentation
Marc Klocke 2014 TaskNav: Task-based Navigation of Software Documentation
Joshua Liben 2013 Infrastructure for API Documentation Analysis
Dwijesh Bhageerutty 2012 NLP Tooling for API Documentation Analysis
Borui Zhang 2011 Qualyzer: A Transcript Coding Tool for Qualitative Analysis
Luke Bayly 2010 Data Mining API Usage
Jean-Benoit Chasles 2010 Sweviz: Software Evolution Vizualization
Jonathan Faubert 2010 Qualyzer: A Transcript Coding Tool for Qualitative Analysis
David Kawrykow 2008-2009 Improving API Usage through Detection of Redundant Code
Tristan Ratchford 2007-2009 Automatically Recommending Triage Decisions for Pragmatic Reuse Tasks
Jean-Rémi Desjardins 2008 Refactoring Awareness for ConcernMapper
David Marple 2008 Tool support for Code Traceability
Putra Manggala 2007 Reusing Program Investigation Knowledge for Code Understanding
Silvia Breu 2007 Inferring Structural Patterns for Concern Traceability in Evolving Software
Frédéric Weigand Warr 2005-2006 ConcernMapper, Suade, Inferring Structural Patterns for Concern Traceability in Evolving Software
Ekwa Duala-Ekoko 2006 Tracking Code Clones in Evolving Software
Jean-Sébastien Boulanger 2006 Managing Concern Interfaces

Undergraduate Project Students

Name Period Project Title
Vivian Li Winter 2024 Design Prototypes for Dynamic Documentation
Jun Soo Kim Winter 2024 A Synthesis of Fonts Research and JetUML Development
Tristan Stevens Winter 2024 Improvements to Database Fragments and Anchoring on Matched AST Nodes
Artem Buyalo Winter 2024 Abstracting JetUML's ClassDiagramRenderer
Muhammad Sohail Fall 2023 Investigating Test Quality: A Revision of Test Convention Consistency
Arthus Wauquiez Fall 2023 Semantic Validation Based Feedback for Software Design Modeling
Ruoyu Deng Winter 2023 Semantic Validation in JetUML
Laurie Prince Fall 2022 Redesigning the persistence feature of JetUML with explicit validation support
Madelyn Lecsek Winter 2022 Adding a Path-Planning Feature to JetUML
Lawrence Berardelli Winter 2022 Testing the DScribe Test Generator
Delphine Pilon Fall 2021 JetUML Performance-Oriented Design Improvements
Yingjie Xu Winter 2021 JetUML 3.2 Diagram Layout Enhancements
Yann Sartori Winter 2021 Label Rendering Improvements in JetUML 3.2
Fariha Anika Winter 2021 Status Bar Proof of Concept for JetUML 3.2
Olivier Grenier-Leboeuf Fall 2020 Tip of the Day Feature For JetUML 3.1
Madonna Huang Winter 2020 JetUML 2.6
Alexa Hernandez Winter 2020 Generating Unit Tests for Documentation
Emma Guthrie Winter 2020 TutorialBuilder
Asvitha Sridharan Fall 2019 Generating Unit Tests for Documentation
Alison Li Fall 2019 Opportunistic Concept Acquisition in Programming
Nima Adibpour Fall 2018 Docco: Documentation-Code Traceability Tool
Mitchell Bears Fall 2018 Docco: Documentation-Code Traceability Tool
Kaylee Kutschera Winter 2018 JetUML 2.0; Lessons Learned While Migrating From Swing to JavaFX
Huanyu Zhao Winter 2018 Design prototype for JetUML
Caroline Berger Winter 2017 JTutor: A programming tool for children
Alexander C. Winter 2017 API Documentation with natural language processing
Joel Cheverie Winter 2015 JetUML
Eric Quinn Winter 2015 JetUML
Dominic Charley-Roy Fall 2014 Reverse engineering AngularJS applications
Ben Fisher Winter 2014 Design prototype for TaskNav
Meki Cherkaoui Fall 2010 Preliminary study of documentation patterns
Sevan Hanssian Fall 2008 Automatic analysis of software documentation
David Kawrykow Winter 2008 Improving API Usage through Detection of Redundant Code
Mohammad Usman Ahmed Winter 2007 Extensible Architecture for ConcernMapper

Interested in joining?

Ph.D. Students: To do a Ph.D. under my supervision you will need a strong background and a research track record in software engineering or a related field, including a research degree (such as M.Sc.), and ideally at least one publication. To indicate your interest to work under my supervision, please fill in this form.

M.Sc. Students: First apply to the M.Sc. program and optionally send me an email to let me know you have applied (please include your application number and do not attach any document). If you plan to hold an NSERC or equivalent Canadian scholarship, please contact me before your application.

Undergraduates: The best way to inquire about opportunities for a research assistant position or self-directed project course is to enroll in one of my courses and talk to me in person. I do not currently offer internships to non-McGill students.

Postdocs:I do not have an open funded postdoc position open at the moment. If you plan to have independent funding for postdoctoral research and are interested in conducting it in my group, please contact me.