Patrick Lam — Associate Professor, Department of Electrical and Computer Engineering

Patrick Lam — Associate Professor, Department of Electrical and Computer Engineering

Patrick Lam

Associate Professor, Department of Electrical and Computer Engineering
Director, Software Engineering Programme
University of Waterloo
email: (no unsolicited commercial email)
phone: use email instead!
Picture of Patrick Lam


About me





Random anecdote



Judo Club

I’m looking for students. If you are interested in doing research with me at the University of Waterloo, please contact me and we can see if we have mutual interests. Be sure to provide some evidence that you know something about my research interests in your email!


Software development often involves manually encoding high-level design information using low-level programming constructs. This can be repetitive and error-prone. My research therefore aims to give developers ways to automatically link high-level designs to low-level implementations, through the use of programming language extensions, particularly those amenable to static or dynamic program analysis.

Current Projects

Views: with Brian Demsky, we developed a novel language extension enabling developers to declaratively specify fine-grained (sub-object-level) locking policies.
Transactional memory: another approach attempting to mitigate the difficulty of concurrent programming. With Gaurav Jain, I am investigating the use of novel interfaces for transactional memory. As with views, our interpretation of transactional memory bridges the gaps between the developer, the compiler and the runtime system.
Unread memory: A well-understood software safety property is that it must not read memory that has not previously been written to. Jon Eyolfson and I are investigating the converse property: what are the properties of writes which never get read? We anticipate exploring related properties in future work.
Analysis and transformation of test cases: With Divam Jain, I am exploring the feasibility of static and dynamic analysis approaches to help developers maintain test suites (in JUnit).
Past Research Accomplishments

I’ve worked with collaborators to share language design and program analysis techniques with the areas of security and embedded systems.

Role-based access control through proxy objects: with Mahesh Tripunitara and Jeff Zarnett. Developed an implementation of an RBAC system which used Java annotations and proxy objects to express the access control policy. Appeared in SACMAT 2010.
Time-aware instrumentation for embedded systems: with Sebastian Fischmeister. Explored a technique for instrumenting embedded systems subject to a time bound, evaluating the reliability of the resulting instrumentation. Appeared in Transactions on Industrial Informatics.
Static analysis of tracematches: with Eric Bodden and Laurie Hendren. Implemented a hybrid static/dynamic analysis for verifying that specified sequences of program events never occur in any execution. Appeared in TOPLAS.
Hob: As part of my PhD thesis, developed a set-based specification language and techniques for verifying that the implementation corresponds to the specification.
I was an early contributor to the influential Soot framework for static analysis of Java bytecode. My main contribution these days is in the form of review articles, such as this CETUS workshop article.
You may also be interested in a more detailed research overview.

Current Students

Jon Eyolfson
Stephen Li
Graduated Students

Jeff Zarnett (co-supervised with Mahesh Tripunitara)
Aakarsh Nair
Hang Chu
Gaurav Jain
Divam Jain (co-supervised with Reid Holmes)
Felix Fang
Wenzhu Man

Here is a full publications list, which includes posters and publications.

Mailing Address and Phone

Patrick Lam
Department of Electrical and Computer Engineering
University of Waterloo
200 University Avenue West
Waterloo, Ontario, Canada N2L 3G1
Office Phone: (519)888-4567 extension 38017
Friends and Collaborators

Eric Bodden (SOAP workshop)
Sebastian Fischmeister
Alex Ghitza
Laurie Hendren (HeroECS robotics team)
Viktor Kuncak
Karen Zee
Dave Wentzlaff’s Christmas Tree Maps numbers search bed and breakfast search
Random software

I’ve developed a bunch of software, which can be found in various places on my research pages. However, on this page, I’m mirroring Dust, which was developed by Raja Vallée-Rai for the Quest for Java competition, and is in the public domain. It is not otherwise on the Internet, and I got it from the Wayback Machine.

Dust v2.0
Not me

Unfortunately, I’m not the only person named Patrick Lam (warning: I’ve heard that there’s malware on that page; this JPG or this other JPG should be safe. Well, sort of.).

Valid HTML 5!


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s