Patrick Lam

Thoughts and travels of Patrick Lam

About me

1 Jan 0001

(Last updated January 2020).

Professional

I’ve been at the University of Waterloo since January 2008, now as Associate Professor of Electrical and Computer Engineering. I’ve also served as Director and Associate Director of the Software Engineering program.

The goal of my research is to help developers state and verify key properties of their software; I apply static analysis techniques to software engineering problems.

In 2007, I was a postdoc at McGill University’s School of Computer Science, working with the late Laurie Hendren, Eric Bodden, and the Sable research group. For many years before that, I was a PhD student at MIT’s Computer Science and Artificial Intelligence Laboratory, working with Martin Rinard, Viktor Kuncak, and others.

ECE 453/CS 447/CS 647 Software Testing, Quality Assurance, and Maintenance, Winter 2023

1 Jan 0001

Course Information: ECE 453/CS 447/CS 647 Software Testing, Quality Assurance, and Maintenance, Winter 2023

Important Dates (may change, assignment descriptions are correct)

Date Event
Jan 9 A0 out
Jan 13 A0 due
Jan 16 A1 out
Jan 30 A1 due
Jan 23 Fuzz out (see your handin repo, under the fb directory)
Feb 13 Fuzz due
Feb 13 A2 out
Feb 15 Quiz 1
Mar 6 A2 due
Mar 6 A3 out
Mar 15 Quiz 2
Apr 10 A3 due
Apr 10 Last day of lectures
Apr 10 Project due

SymEx Jupyter Notebook

Referred to in one of the videos from W22. SymEx.ipynb

ECE 453/CS 447/CS 647 Software Testing, Quality Assurance, and Maintenance, Winter 2023: Grading Policy

1 Jan 0001

Grading Scheme

Graduate students taking this course have a project. Undergraduate students are not required to do a project, but may choose to do so after consulting me.

ECE 453/CS 447

  • Assignments: 35%
    • Assignment 1: 10%
    • Fuzz Battle: 5%
    • Assignment 2: 10%
    • Assignment 3: 10%
  • Quizzes: 20%
    • Quiz 1: 10%
    • Quiz 2: 10%
  • Final Exam: 45%

CS 647

  • Assignments: 35%
    • Assignment 1: 10%
    • Fuzz Battle: 5%
    • Assignment 2: 10%
    • Assignment 3: 10%
  • Quizzes: 20%
    • Quiz 1: 10%
    • Quiz 2: 10%
  • Final Exam: 25%
  • Project: 20%

Comments and caveats

All assignments, quizzes, and tests that are submitted online will be returned online. Submissions will be by pushing to gitlab.

ECE 453/CS 447/CS 647 Software Testing, Quality Assurance, and Maintenance, Winter 2023: Projects

1 Jan 0001

ECE 453/CS 447/CS 647: Projects

There are two choices of project. Projects can be done in groups of 2. You must declare your project by the end of Week 8. All projects must be approved by the instructor. Talk to me. Sooner the better. Deadline for project approval is Week 10. Projects are due by the last day of class.

ECE 653 Software Testing, Quality Assurance, and Maintenance, Spring 2022

1 Jan 0001

ECE 653 S22: Grading

  • Assignments: 35%
    • Assignment 1: 10%
    • Fuzz Battle: 5%
    • Assignment 2: 10%
    • Assignment 3: 10%
  • Quizzes: 20%
    • Quiz 1: 10%
    • Quiz 2: 10%
  • Final Exam: 25%
  • Project: 20%

All assignments, quizzes, and tests that are submitted online will be returned online. Submissions will be by pushing to gitlab.

Final exam will be in-person.

All quizzes are take home, open book, closed internet. Each online test will be time limited and must be completed within 3 days. That is, you can pick the best time to take the test, but once you start, you have to finish within the given time limit.

ECE 653 Software Testing, Quality Assurance, and Maintenance, Spring 2022

1 Jan 0001

ECE 653, Spring 2022: Syllabus (deprecated version)

(based on a previous version by Prof. Arie Gurfinkel; thanks!)

(this version is deprecated; official version at [https://outline.uwaterloo.ca/view/nrvxsk]).

Course Description and Main Topics

This course will provide an introduction to software testing and quality assurance techniques. The students will learn a wide spectrum of techniques and tools that can be used to improve and evaluate software quality ranging from mature testing methodologies to cutting edge automated verification algorithms. Topics to be covered include: coverage criteria (graph, data-flow, and logic coverage), symbolic execution (static, dynamic, concolic), constraint solving (SMT), inductive invariants, automatic deductive verification, automatic invariant synthesis, and Software Model Checking.

ECE 653 Software Testing, Quality Assurance, and Maintenance, Spring 2022

1 Jan 0001

Course Information

Important Dates (may change, assignment descriptions are correct)

Date Event
May 3 A0 out
May 9 A0 due
May 10 A1 out
June 3 A1 due
May 26 Fuzz out (see your handin repo, under the fb directory)
June 13 Fuzz due (was June 10)
June 13 Quiz 1 out
June 14 A2 out
July 4 A2 due (first workday after July 1 holiday)
July 5 A3 out
July 5 Quiz 2 out
July 26 A3 due
July 26 Last class
August 5 Project due

SymEx Jupyter Notebook

Referred to in one of the videos from W22. SymEx.ipynb

ECE 653 Software Testing, Quality Assurance, and Maintenance, Spring 2022: Projects

1 Jan 0001

ECE 653 S22: Project

There are two choices of project. Projects can be done in groups of 2. You must declare your project by the end of Week 8. All projects must be approved by the instructor. Talk to me. Sooner the better. Deadline for project approval is Week 10. Projects are due by the last day of class.

The exact project deliverables depend on the project chosen. All projects must include approximately a 10 page report. The length of the report depends on the amount of code involved in the project (i.e., more code means shorter report).

Free Software

1 Jan 0001

I enjoy contributing to free software projects. Unfortunately, I somehow haven't had time to contribute anything recently. However, here are some of the projects that I've contributed to in the past.

  • Soot, a compiler framework for Java bytecode. I implemented the Grimp intermediate representation, which contains aggregated expressions (rather than the simple three-address code of Jimple). I also did general Soot hacking.
  • AbiWord, a free word processor. I contributed a number of bug fixes and the initial version of endnotes to AbiWord.
  • fontconfig, a font selection and configuration library for the X Window System. I implemented mmap-able caching for font information.
  • I developed a (GPL) formula viewer for MONA input files. It uses SableCC 3.0's ability to display ASTs using Swing.
  • I've written an o'caml backend for SableCC 3, available in diff form from Indrek Mandre's svn tree, at svn://svn.sablecc.org/developers/indrek/sandbox/sablecc-indrek/.

Posts Archive

1 Jan 0001

{{ .Render "archive" }}