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

dates
slides
misc.
Aug. 29 introduction
Aug. 31 cont. on introduction

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

Sep. 12
intermediate representation

Sep. 14
cont. on intermediate representation
HW#2
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
HW#3
Sep. 26
No class. Substitution: 4 PM Sep. 21, ECE seminar, CAMP 177
Sep. 28
Q&A

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
Patty
Nov. 9 paper presentation: C Preprocessor
Jerry
Nov. 14 paper presentation: Meta Compilation
Chandan
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.

Objectives

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
Work
Note
Weight
Sept.
homework
2 to 3 weekly homework to ensure understanding of the basics of program analysis and verification.
10%
Oct.
paper reviews
review 3 papers out of a set of selected papers.
An essay on how to read a paper
40%
Nov. 1~ Nov. 15 paper presentation
present one of the reviewed papers in detail to class. guidelines
20%
Nov. 15 ~ Dec. 15
term project
prototype a small idea; evaluate an existing tool; or survey a particular technique.
A list of tools
30%

* 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