EE 569, Software Design and Analysis

Fall 2006 subject: Program Analysis for Software Engineering

Lecture:   T R 9:30-10:45 AM    Room:  Rowley 142

Instructor: Daqing Hou

Office: CAMP 127   Office hours: T R 11 AM-2 PM
Email: dhou at clarkson dot edu              Phone: 7675

Background Reading

(1) read before Thursday Aug. 31 class: Proof of a Program: Find
(2) read during September: Using Redundancies to Find Errors

Schedule & Lecture Notes

Aug. 29 introduction
Aug. 31 cont. on introduction

Sep. 5
proof of a program: find
Source code
Sep. 7
overview of compilation

Sep. 12
intermediate representation

Sep. 14
cont. on intermediate representation
Sep. 19
data flow analysis
Sep. 21
(1) cont. on data flow analysis
(2) ECE seminar: Source-Level Linkage for C++ Fact-Bases
ECE seminar
4 PM
177 CAMP
Sep. 26
No class. Substitution: 4 PM Sep. 21, ECE seminar, CAMP 177
Sep. 28

Oct. 3
fall recess

Oct. 5 data dependence
Oct. 10 control dependence Due: paper selection
Oct. 12 tutorial: introduction to SCL (1)

Oct. 17 SCL tutorial: part (2) Due: review #1
Oct. 19 SCL tutorial: part (3)
Oct. 24 pointer analysis for C
Due: review #2
Oct. 26 pointer analysis for Java
Oct. 31 Spec#,  videotaped talk from Microsoft Research
Due: review #3
Nov. 2
cont. with Spec# presentation

Nov. 7 paper presentation: PR-Miner
Nov. 9 paper presentation: C Preprocessor
Nov. 14 paper presentation: Meta Compilation
Nov. 16
project meeting every Tue Thu
@CAMP 127
9:30-10:00: Patty
10:00-10:30: Chandan
10:30-11:00: Jerry

Intended Audience

Graduate and senior undergraduate students of computer science and computer engineering interested in the general issue of ensuring software quality. Students should be confident with at least one high-level programming language, such as C/C++ and Java. Confidence and interest in programming is definitely a plus. Prior exposure to compilers construction is helpful, but not necessary. Students intending to work with the instructor in the future must take this course.


Software quality. Programmers intent. Expression and discovery of intent. Program-analysis-based tools for software engineering. Data structures for program analysis. Data flow analysis. Control flow analysis. Pointer analysis. Data dependence. Control dependence. Side-effect analysis. Evaluation of selected tools.

Learning Outcomes

1. Students will understand the fundamentals of program analysis.
2. Students will understand the challenges/limitations in this area and apply this understanding to criticizing existing tools.
3. Students will learn how to evaluate an existing tool.

Course Work and Evaluation*

Rough time line
2 to 3 weekly homework to ensure understanding of the basics of program analysis and verification.
paper reviews
review 3 papers out of a set of selected papers.
An essay on how to read a paper
Nov. 1~ Nov. 15 paper presentation
present one of the reviewed papers in detail to class. guidelines
Nov. 15 ~ Dec. 15
term project
prototype a small idea; evaluate an existing tool; or survey a particular technique.
A list of tools

* This is only an estimation. It may be changed after class starts.

July 31, 2006 --           Redaction 1
August 22, 2006 --      Redaction 2 added link to tools
August 29, 2006 --      Redaction 3 added reading list, course notes
September 11, 2006 -- Redaction 4 added more lecture topics
October 23, 2006 --     Redaction 5 added November lecture topics
October 27, 2006 --     Redaction 6 changed from Patricia to Patty upon request