Patrick Lam

Associate Professor, Department of Electrical and Computer Engineering
University of Waterloo
Gastprofessor, ETH Zurich (2015-2016)
email: (no unsolicited commercial email)
phone: use email instead!

Picture of Patrick Lam

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

Past Research Accomplishments

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

You may also be interested in a more detailed research overview.

Current Students

Graduated Students


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

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.

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!