Current Faculty

Ivan Beschastnikh

Ivan Beschastnikh

Ivan Beschastnikh is an Assistant Professor and works at the intersection of software engineering and systems. His particular domain of interest is distributed/concurrent systems. He is especially interested in the problems of specification inference and program comprehension. His solutions usually combine program instrumentation, program analysis, and software visualization.

More details about Ivan's research can be found on his home page.

William J. Bowman

William J. Bowman

William J. Bowman is an Assistant Professor interested in making it easier for programmers to communicate their intent to machines, and preserving that intent through compilation. His recent work examines preserving machine-checked specifications and proofs through compilation and statically enforcing those invariants in the low-level (assembly-like) code.

More details about William's research can be found on his home page.

Ronald Garcia

Ronald Garcia

Ronald Garcia is an Associate Professor of Computer Science at the University of British Columbia. His research investigates how fundamental concepts in the theory, implementation, and practice of programming languages can improve the software development process. His research has focused on static and dynamic type-based reasoning, metaprogramming, and generic programming.

More details about Ron's research can be found on his home page.

Reid Holmes

Reid Holmes

Reid is an Associate Professor in the lab. He is broadly interested in the problems software engineers encounter as they create and evolve software systems. His research mostly involves finding novel techniques to make it easier for software developers to quickly, and correctly, evolve their software systems.

Reid's work has spanned many different domains including recommendation systems, software reuse, source code documentation, software testing, and software development environments.

More details about Reid's research can be found on his home page.

Caroline Lemieux

Caroline Lemieux

Caroline is starting as Assistant Professor in the lab in Summer 2022. Her research focuses on building automated tools that help developers improve the correctness, security, and performance of software systems. Her work combines program analysis with optimizing search and learning techniques in order to make these tools tractable over large-scale software projects.

Caroline's research has tackled a variety of software engineering and programming languages problems, including test-input generation (in particular, fuzz testing), specification mining, and program synthesis.

More details about Caroline's research can be found on her home page.

Gail Murphy

Gail Murphy

Gail is a Full Professor and the founder of the lab. She is also the Vice-President Research & Innovation for UBC and a co-founder and Director at Tasktop Technologies.

Gail's research interests are in software engineering with a particular interest in improving the productivity of knowledge workers, including software developers. Her group develops tools to aid with the evolution of large software systems and performs empirical studies to better understand how developers work and how software is developed.

More details about Gail's research can be found on her home page.

Alex Summers

Alex Summers

Alex is an Associate Professor, working in a number of research areas related to program correctness. He specialises in deductive verification: techniques for annotating program code with specifications, and providing tools which can automatically answer the question of whether the code lives up to those specifications.

Alex is interested in a wide variety of techniques and tools, and has worked in the past on type systems, object invariant techniques, formal proof systems, intermediate verification languages, writing and debugging logical encodings to SMT solvers, etc.

More details about Alex can be found on his web page.

Affiliate Faculty

Thomas Fritz

thomas fritz

Thomas is an Associate Professor in the Department of Informatics at the University of Zurich.

In his research, he focuses on empirically studying software developers and on using personal and biometric data to improve software developers' productivity. By better understanding what software developers need, what they experience, and how they operate on a daily basis, we will be able to provide better and more tailored support to developers as well as improve their productivity and the quality of the software they produce. In particular, Thomas is interested in three areas: developer productivity, biometric sensing and information needs. Thomas works with over 20 international companies, including ABB, Microsoft, and IBM. This research was featured in several media, including the New Yorker, the Wall Street Journal, and the New Scientist.

More details can be found on his UBC home page and his UZH home page

Current Members

Shaiful Chowdhury (Postdoctoral Researcher)


Shaiful Chowdhury is an NSERC Postdoctoral Fellow hosted by Professor Reid Holmes. His research interests include software maintenance and evolution, software energy efficiency, and mining software repositories.

More details can be found on Shaiful's home page.

Giovanni Viviani (Ph.D. student)


Giovanni is the longest serving PhD student in the lab. He is broadly interested in software engineering, particularly how developer communicate between each other and how that can be used to enhance their workflow.

His current focus is exploring the possibility of identifying when developers discuss design and extract it.

More details can be found on Giovanni's home page.

Felipe Bañados Schwerter (Ph.D. candidate)


Felipe's research interests include Programming Languages, Type Systems, Gradual Typing, Abstract Interpretation, Formal Verification, Human Computer Interaction, Provenance, and Social Aspects of Computing.

More details can be found on Felipe's home page.

Daniel Almeida (Ph.D. student, on leave)

Daniel Almeida

Daniel is a Software Developer and researcher in training (aka PhD Student). His interests include software design/evolution and empirical software engineering.

He likes to spend his days drinking the elixir of life (that would be coffee, of course), coding, and reading/writing papers. His goal is to identify, understand and solve problems that come between software developers and great work being done.

More details can be found on Daniel's home page.

Arthur Marques (Ph.D. student)

Arthur Marques

Arthur is a Ph.D. student in the lab. His research interests include software engineering, software testing, and software evolution. He is currently interested in identifying/mapping knowledge snippets spread throughout software artifacts.

More details can be found on Arthur's home page.

Nico Ritschel (Ph.D. student)


Nico is a Ph.D. student that is co-supervised by Reid Holmes and Ron Garcia, doing research that is on the brink of Software Engineering and Programming Languages like language design, static analysis and program transformations. He is interested in the theoretical aspects that lay the foundation for these topics, as well as empirically measuring the impact they have on developers.

More details can be found on Nico's home page.

Nick Bradley (Ph.D. student)

Nick Bradley

Nick is a Ph.D. student in the lab. He is interested in understanding developer workflows and how they can be made more natural to interact with. His Master's thesis examined the role of conversational agents in software engineering.

More details can be found on Nick's home page. Code and data related to his personal and research projects can be found on his GitHub page.

Adam T. Geller (Ph.D. student)

Adam T. Geller

Adam is a Ph.D. student in the lab supervised by William J. Bowman. He is interested in solving problems relating to practical type preservation.

More details can be found on Adam's home page.

Anna Maria Eilertsen (Visiting Ph.D. student)


Anna is currently visiting from UiB, Norway. She is doing her Ph.D. on language transformation tools that make it easier for developers to maintain and evolve their code without losing their mental models. She likes refactorings, software language design and code evolution.

More details can be found on Anna's home page.

Paulette Koronkevich (M.Sc. in Computer Science, Ph.D. track)

Paulette Koronkevich

Paulette is a Master's student on the PhD track supervised by William J. Bowman. Her research focuses on type preserving compilation of dependent types.

More details can be found on Paulette's home page.

Syed Ishtiaque Ahmad (M.Sc. in Computer Science)

Syed Ishtiaque Ahmad

Syed is a Master's student in the lab. He is interested in solving problems that developers face in terms of context switching and technical debt as software evolves.

More details can be found on Syed's home page.

Katharine Kerr (M.Sc. in Computer Science)

Katharine Kerr

Katharine is a Master's student who decided to return to school after working five years in the industry. She is interested in exploring ways to make software development more efficient.

More details can be found on Katharine's home page.

James Yoo (M.Sc. in Computer Science)

James Yoo

James is a Master's student in the lab. His interests are broad, ranging from programming languages to software engineering. He is hoping to solve problems that stand in the way of software systems that are more maintainable, evolvable, testable, and understandable for developers.

More details can be found in the links below:

Alison Li (M.Sc. in Computer Science)

Alison Li

Alison is a Master's student in the lab. She is interested in making large-scale software systems more maintainable for newcomer developers.

More details can be found on Alison's home page.

Past Members

Postdoctoral Researchers

Graduate Students

SPL has had many wonderful students participate in the lab. Below are some with their first affiliation after graduation when known. If you are missing from this list or want your entry updated, just drop Reid an email!

Undergraduate Students

SPL has also welcomed many undergraduate students for Honours Theses, undergraduate directed studies, summer research projects, cooperative work terms and more. Here are some of the students who have participated in the lab.

Victor Barua, Eric Booth, Harinder Brar, Avi Bryant, Andrew Catton, Andrew Chan, Ruiyuan (Ronnie) Chen, Danita Cheng, Denise Choi, Wesley Coelho, Alison Clark, Joseph Collins-Unruh, Mirela Cukovic, Tanya Ellchuk, Taivo Evard, Thomas Fritz, Shauna Gammon, Nathan Hapke, Thad Heinrichs, Anson Ho, Reid Holmes, Harold Hsu, Katherine Irvine, Khurram Jafery, Tom Jarecki, Mik Kersten, Dominika Lacka, Alan Lai, Albert Lai, Ciaran Llachlan Leavitt, Leo Lee, Nick Lee, Robert Lee, Cynthia Lim, Julia Litke, Lindsay Mason, Tracy Mew, Shawn Minto, Kenneth Mui, Robin Newhouse, Jerilyn Ning, Leo Ping, Winnie Poon, Tanja Radeka, Robert Rekrutiak, Ekaternia Saenko, Jeff Steinbok, Derek Shimoza, Patience Shyu, Jonathan Stiansen, Ken Sueda, Erin Takeshita, Kimberely Tee, Matthew Theobald, Cristina Teodoropol, Neil Thomas, Stephanie Van Dyk, Kaili Vesik, James Williams, Dave Wilson, Albert Wong, Annie Ying, Jason Xu