We are exploring both theoretical and applied areas of programming languages, from type systems and static analysis to virtual machines and concurrency.

Peter Buhr

Concurrency, visualization and debugging, polymorphism, persistence.

Charlie Clarke

Information retrieval, Web search, Web data mining, text data mining and software tools.

Gordon Cormack

Programming languages, compilers, concurrency, information storage and retrieval.

Werner Dietl

Programming languages, software engineering, software correctness and robustness.

Patrick Lam

Software Engineering, static program analysis, verifiable software specifications

Ondřej Lhoták

Programming language design & implementation, program analysis of object-oriented languages.

Gregor Richards

Programming language and virtual machine design, in particular dynamic and gradually-typed languages.

Brad Lushman

Typed and untyped λ-calculi, functional programming, type systems.

Nomair Naeem

Programming languages, compilers, program analysis, software verification. Pedagogy.

Magnus Madsen

Static program analysis, points-to and dataflow analysis, and logic programming.

Jon Eyolfson

Advisor: Patrick Lam
Static analysis, dynamic analysis, empirical studies.

Jeff Luo

Advisor: Werner Dietl
Program synthesis, type systems, software engineering.

Aaron Moss

Advisor: Peter Buhr
Programming languages, GPGPU.

Marianna Rapoport

Advisor: Ondřej Lhoták
Type systems, functional programming.

Ellen Arteca

Advisor: Gregor Richards
Programming languages, gradual typing, type theory.

Daniel Gerald Caccamo

Advisor: Werner Dietl

Zhuo Chen

Advisor: Werner Dietl
Programming languages, optional type systems.

Thierry Delisle

Advisor: Peter Buhr
Programming languages, exception handling.

Ifaz Kabir

Advisor: Ondřej Lhoták
Logic, type systems, functional programming, interpreters.

Jianchu (Jason) Li

Advisor: Werner Dietl
Programming languages, inference of optional type systems.

Abel Nieto

Advisor: Ondřej Lhoták

Srihari Radhakrishnan

Advisor: Peter Buhr
Programming languages, high-performance web-servers.

Mier Ta

Advisor: Werner Dietl
Programming languages, optional type systems.

Rafi Turas

Advisor: Gregor Richards

Alexi Turcotte

Advisor: Gregor Richards
Gradual typing, language design, theory of computing.

Jun Zhao

Advisor: Patrick Lam
Static analysis, test automation.


Rei Thiessen, 2017
Thesis title: Efficient Pointer Analysis of Java in Logic.
Karim Ali, 2014
Thesis title: The Separate Compilation Assumption.
Nomair A. Naeem, 2013.
Thesis title: Verification of Temporal Properties Involving Multiple Interacting Objects.
Mirza Omer Beg, 2013.
Thesis title: Combinatorial Problems in Compiler Optimization
Ashif Harji, 2010.
Thesis title: Performance Comparison of Uniprocessor and Multiprocessor Web Server Architectures.
Roy Krischer, 2010.
Thesis title: Advanced Concepts in Asynchronous Exception Handling.
Thomas Lynam, 2009.
Thesis title: Spam Filter Improvement Through Measurement.
Thomas Lynam, 2009.
Thesis title: Spam Filter Improvement Through Measurement.
Brad Lushman, 2007.
Thesis title: Direct and Expressive Type Inference for the Rank 2 Fragment of System F.
Jun Chen, 2009.
Thesis title: Guided Testing of Concurrent Programs Using Value Schedules.
Stefan Büttcher, 2007
Thesis title: Multi-User File System Search.
Jiongxiong Chen, 2005.
Thesis title: Extensions to Fixed Priority with Preemption Threshold and Reservation-Based Scheduling.
Egidio Terra, 2004.
Thesis title: Lexical Affinities and Language Applications
Anthony Cox, 2002.
Thesis title: A Source-based Approach to Representing and Managing Information Extracted by Program Analysis.
Dave Mason, 2002.
Thesis title: Probabilistic Program Analysis for Software Component Reliability.
Charlie Clarke, 1996.
Thesis title: An Algebra for Structured Text Search.
Anil Goel, 1996.
Thesis title: Exact Positioning of Data Approach to Memory Mapped Persistent Stores: Design, Analysis and Modelling.
Gordon Vreugdenhil, 1996.
Thesis title: A Framework for On-Line Partial Evaluation.
Jun Shen, 1993.
Thesis title: Parametric Overloading, Higher-Order Modules and Dynamic Dispatch: An Ada-Based Approach.
Glen Ditchfield, 1992.
Thesis title: Contextual Polymorphism.


Rob Schluntz, 2017.
Thesis title: Resource Management and Tuples in CⱯ.
Ming-Ho Yee, 2016.
Thesis title: Implementing a Functional Language for Flix.
Dan Brotherston, 2016.
Thesis title: Gradual Pluggable Types in Java.
Marianna Rapoport, 2014.
Thesis title: Data Flow Analysis in the Presence of Correlated Calls.
Tarek Chammah, 2011.
Thesis title: Nested pessimistic transactions for both atomicity and synchronization in concurrent software.
Jonathan David Rodriguez, 2010.
Thesis title: A Concurrent IFDS Dataflow Analysis Algorithm Using Actors.
Alan Leung, 2008.
Thesis title: Automatic Parallelization for Graphics Processing Units in JikesRVM.
Andrew Stevenson, 2008.
Thesis title: Aspect-Oriented Smart Proxies in Java RMI
Ayelet Wasik, 2008.
Thesis title: Features of a Multi-Threaded Memory Allocator.
Justyna Gidzinski, 2007.
Thesis title: μProfiler: A Concurrent Profiler for Concurrent C++ (μC++).
Adam Richard, 2007.
Thesis title: OOMatch: Pattern Matching as Dispatch in Java.
Peter Chun Kai Yeung, 2007.
Thesis title: Weighting Document Genre in Enterprise Search.
Archana Adma, 2006.
Thesis title: iTalk: Index your talk.
Jason Skomorowski, 2006.
Thesis title: Topical Opinion Retrieval
Josh Lessard, 2005.
Thesis title: Profiling Concurrent Programs Using Hardware Counters.
Allan Menezes, 2005.
Essay title: A Java Implementation Of A Groupware Editor With Concurrent Update.
Philip Tilker, 2005.
Thesis title: A reliable storage management layer for distributed information retrieval applications.
Jun Chen, 2004.
Thesis title: RMA: A Pattern Based J2EE Development Tool.
Rodolfo Gabriel Esteves, 2004.
Thesis title: Cforall, a Study in Evolutionary Design in Programming Languages.
Daisy Guo, 2004.
Thesis title: Chinese Question Answering with Full-Text Retrieval Re-Visited.
John Johansen, 2004.
Thesis title: Delta Pointers.
David Yeung, 2004.
Thesis title: Adapting Information Retrieval Techniques for a Biomedical Corpus.
Richard Bilson, 2003
Thesis title: Implementing Overloading and Polymorphism in Cforall.
Ming-Yee Iu, 2002.
Thesis title: Selective Flooding in Ad Hoc Networks.
Roy Krischer, Diplomarbeit, 2002.
Thesis title: Bound Exceptions in Object-Oriented Programming Languages.
Brad Lushman, 2002.
Thesis title: Transformation-based Concurrency Control in Groupware Systems.
Thomas Lynam, 2002.
Thesis title: Exploitation of Redundant Inverse Term Frequency for Answer Extraction.
Greg McLearn, 2002.
Thesis title: Autonomous Cooperating Web Crawlers.
Thomas Lynam, 2002.
Thesis title: Exploitation of Redundant Inverse Term Frequency for Answer Extraction.
Chiasen (Charles) Chung, 2001.
Thesis title: Topic-oriented Collaborative Web Crawling.
Caroline Kierstead, 2001.
Essay title: The Application of Patterns to Concurrent Control Flow.
Leszek Kurzyna, 2000.
Thesis title: A Self-Organizing, Reliable Information Retrieval System.
Dorota Zak, 2000.
Thesis title: Analyzing Multi-Threaded Program Performance with uProfiler.
Ashif Harji, 1999
Thesis title: High-Level Real-Time Concurrency.
Kinson Ho, 1999.
Thesis title: WatEVER: An Effective and Efficient Web Notification Protocol.
Oliver Schuster, Diplomarbeit, 1999.
Thesis title: Replay of Concurrent Shared-Memory Programs.
Michael Van Biesbrouck, 1999.
Thesis title: Compiling GCL Query Evaluators
Ming Zhou, 1999.
Thesis title: Generalizing Database Access Methods.
Sam To, 1998.
Thesis title: Passage-Based Chinese Text Retrieval
Robert Denda, Diplomarbeit, 1997.
Thesis title: Profiling Concurrent Programs.
Simon Gammage, 1997.
Essay title: Compiling Standard ML to Java.
Russell Mok, 1997.
Thesis title: Concurrent Abnormal Event Handling Mechanisms.
Charlie "Buck" Krasic, 1996.
Thesis title: Parametric Overloading In ML.
Philipp Lim, 1996.
Thesis title: Real-time in a Concurrent, Object-Oriented Programming Environment.
Piotr Przybylski, 1996.
Thesis title: A Type-Based Implementation of a Language with Distributed Scope.
Jun Shih, 1996.
Thesis title: Debugging Concurrent Programs
Chi-Hung (Wilson) Tam, 1996.
Thesis title: Objects with Polymorphic Methods and Self Types in Standard ML.
Martin Karsten, Diplomarbeit, 1995.
Thesis title: A Multi-Threaded Debugger for Multi-Threaded Applications.
Constantinos Sourelis, 1995.
Thesis title: Mixin Modules.
Frederick Bent, 1994
Thesis title: A Standard ML Type Error Explanation System.
Rory Jacobs, 1994.
Thesis title: A Debugger for Multi-Threaded Applications.
Hamish Macdonald, 1993.
Thesis title: Exception Handling for the uSystem.
Scotte Zinn, 1993.
Thesis title: Efficient Event Generation for Race Detection.
Anderson Wai, 1992.
Essay title: Storage Management Support for Memory Mapping.
David Ziegler, B.IS., 1992.
Thesis title: Adding "Overloading Polymorphism" to C.
Brian Younger, 1991.
Thesis title: Adding Concurrency to C++.
Charlie Clarke, 1990.
Thesis title: Language and Compiler Support for Synchronous Message Passing Architectures.
Anthony Scian, 1990.
Thesis title: Software reusability paradigms.
Gordon Vreugdenhil, 1990.
Thesis title: Memory Management and Light-Weight Tasks on Loosely Coupled Multiprocessors.
Michel Fortier, 1989.
Thesis title: A Study of Monitors.
David W. Till, 1989.
Thesis title: Tuples In Imperative Programming Languages.
Richard A. Stroobosscher, 1989.
Essay title: Light Weight Processes in a Shared Memory Multiple Processor Environment.
Andrew Wright, 1986, Research Associate 1988-1990.
Thesis title: Design of the programming language ForceOne.
Dennis Vadura, 1985.
Thesis title: A Proposed Design for the Sylvan Kernel.