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.
|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.
|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!). I am interested in software documentation and its role in CS education. I'm also curious about the application of natural language processing and machine learning in software engineering research. Keep w(a/o)ndering!
|Alexa Hernandez • Master's Student
My research interests include software design, maintenance, and evolution. I received a B.A.in Computer Science at McGill University.
|Lucas Turpin • Master's Student
I am passionate about software engineering and how complex software systems are built. I completed my B.Eng. in Software Engineering at Concordia University.
|Louis-Bertrand Varin • Master's Student
I am a back-end developer at Unito working on a release engineering project for my Master's. I completed my B.A.Sc. in Computer Science at Université du Québec à Montréal (UQAM).
|Zara Horlacher •
Undergraduate Research Assistant
I am an undergraduate student at McGill University majoring in Computer Science. My research interests include software design and algorithm design.
|Fariha Anika •
Undergraduate Research Project
I am a second year McGill student completing my B.Sc. in Software Engineering. I have experience in bioinformatics and am now pursuing further research in software design.
|Yann Sartori •
Undergraduate Research Project
I am an undergraduate student at McGill, studying computer science. I am interested in software design due to the manageability it provides regarding development.
|Yingjie Xu • Undergraduate Research Project
I am an undergraduate software engineering student at McGill University. I am interested in software design and maintenance.
|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 Adelaide|
|Bradley Cossette||2014-2015||Eliciting User Interests in Reviews of Complex Products||Advanced Analytics and Insights Manager, GM Canada.|
|Peter C. Rigby||2011-2012||Discovering Essential Code Elements in Informal Documentation||Assistant Professor at Concordia University|
|Annie Ying||2016||Code Fragment Summarization||Lead Data Scientist at startup EquitySim|
|Barthélémy Dagenais||2012||Analysis and Recommendations for Developer Learning Resources||Chief Technology Officer at startup Resulto|
|Ekwa Duala-Ekoko||2012||Using Structure-Based Recommendations to Facilitate API Learnability.||Director of Engineering at Fuze|
|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||Java Developer at Morgan Stanley|
|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||Senior Software Engineer at Salesforce|
|Tristan Ratchford||2011||Creating Application Programming Interface Code Templates from Usage Patterns||Senior Software Engineer at Wellington Management|
|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 Program Manager at Microsoft|
|Punit Agrawal*||2009||Program Navigation Analysis Using Machine Learning||Staff Software Engineer at ARM|
|Barthélémy Dagenais||2008||Recommending Adaptive Changes for Framework Evolution||Chief Technology Officer at startup Resulto|
|Olivier Giroux||2007||Detecting Increases in Feature Coupling using Regression Tests||Principal Architect at NVIDIA|
|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|
|Olivier Grenier-Leboeuf||Summer 2020||Commenting Practices in Open Source Java Software|
|Madonna Huang||Summer 2020||Advanced Sequence Diagram Features for JetUML|
|Alison Li||2019||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|
|Olivier Grenier-Leboeuf||Fall 2020||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 Chatron-Michaud||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|
Postdocs:I do not have an open funded postdoc position open at the moment. If you plan to have funding for postdoctoral research and are interested in conducting it in my group, please contact me.
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 be considered as a potential Ph.D. student, you should first apply to the Ph.D. program, and then contact me with your application ID (except if you have applied for an NSERC or equivalent Canadian scholarship, in which case you can contact me ahead of the application deadline.
M.Sc. Students: First apply to the M.Sc. program and contact me once you are at McGill. Make sure to enroll in one of my graduate courses. 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.