Patrick Lam

Thoughts and travels of Patrick Lam

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" }}

Research

1 Jan 0001

Research

My publications contain more technical descriptions of my research.

My research aims to develop tools and techniques to help developers produce more reliable software systems. In particular, I am developing (1) lightweight specification languages, which enable developers to state key properties of their software, and (2) static analysis techniques, which enable compilers to verify that these properties actually hold.

Technology. Static analysis determines properties of a program without actually executing the program; contrast this to dynamic analysis, which collects program properties by observing program executions. Optimizing compilers have used static analysis to eliminate unnecessary computations and thereby speed up program executions. In the software engineering domain, static analysis has been used, for instance, to find potential null pointer bugs and to verify that device drivers always respect API usage requirements.

Static Analysis for Software Engineering, Winter 2021

1 Jan 0001

Outline v1: pdf

Presentation tips

Papers list: google doc

Project suggestions: google doc

Final exam

Static Analysis for Software Engineering, Winter 2022

1 Jan 0001

Outline v3: pdf

Presentation tips

Lecture 1: How to science

Papers list: google doc

Project suggestions: google doc

Week 1 presentation by me

2021 Final exam, for reference

2022 Final exam