CSE 6329: Special Topics in Advanced Software Engineering: Fall 2009

Basic Information

Time: Tuesday and Thursday 5:00-6:20 pm
Location: General Academic Classroom Building (GACB) 105

Instructor: Christoph Csallner
Email: csallner@uta.edu
Office: Nedderman Hall (NH) 306
Office hours: Tuesday and Thursday 6:20-7:00 pm

Syllabus: syllabus.pdf

Topic: Program Analysis

This course is a hands-on introduction to program analysis. We experiment with cutting-edge program analysis tools and work through the techniques they are built on. This should give us a good grasp of the fundamental properties of static program analysis, dynamic program analysis, and their combinations. The course targets both Master and Ph.D. students.

Motivation

Software is everywhere Bad program behavior could be fatal
Billboard in Poland showing a Windows error Movie set with plane crash
(Warsaw, Poland. Picture by rintakumpu) (Not an actual crash. Picture by louder)

Bad program behavior during production use can endanger the safety of users and become very expensive. To protect the user from bad program behavior, we would like to reason about programs and predict their behavior. Luckily, many techniques exist for reasoning about programs. The subset of automated techniques is commonly referred to as program analysis.

Program analysis is used in many real-world applications. Examples include compilers and virtual machines (e.g.: gcc, HotSpot JVM, .Net), integrated development environments (Eclipse, Visual Studio), automatic bug finding and verification (FindBugs, Static Driver Verifier, Spec#), program understanding and re-engineering (Agitar), embedded system development (AbsInt), etc.

"Microsoft began to place heavy emphasis on improving the security of its software. Program-analysis tools have been key to the successes of these efforts, allowing our engineers to detect and remove security vulnerabilities before products are released. Today, Microsoft's engineering practices for security are formalized in the Security Development Lifecycle, or SDL, which mandates application of program-analysis tools and security-enhancing options."
[Steve Lipner, senior director of security engineering strategy in Microsoft's Trustworthy Computing Group, in CACM, Feb. 2009]

Prerequisites

Fluency in an object-oriented programming language (e.g., Java, C#, or C++).

Overview

The SERC Wiki has a tentative overview of the material covered (requires netid).

Mailing list

We use our mailing list as the main channel for asking and answering questions about homework assignments, etc: CSE6329-CSALLNER.

Textbook

No textbook required. We use selected papers from the literature. All papers are freely available to registered UTA students.

Optional references

Kenneth H. Rosen. Discrete Mathematics and its Applications. McGraw-Hill. (This textbook explains the basic concepts of set, relation, function, graph, tree, etc.)

Michael Sipser. Introduction to the Theory of Computation. Course Technology. (This textbook provides a very readable introduction to automata, decidability, and complexity theory.)

Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles, Techniques, and Tools. Addison Wesley. (This is the classic compiler book. It gives a thorough introduction to basic program analysis concepts, including basic blocks, control flow graphs, and dataflow analyses.)

Evaluation

10% homework
20% quizzes
20% research paper presentation
10% class participation
20% group project written report
20% group project presentation

Homework

There will be two homework assignments, which will be weighed equally at 5% each. Each will focus on applying a program analysis tool we discussed in class. I will provide detailed instructions on how to use the tool.

Quizzes

Quizzes will be announced in class and on the mailing list one week in advance. A quiz will be in the first 15 minutes of a class. They are closed-book but you can use a cheat sheet that you have written yourself.

Research Paper Presentation

Each student will pick one paper. The paper may come from the reading list or be proposed by the student. Following is the tentative reading list. I may add papers to the list during the semester.

Reading list: reading.pdf

Group Project

The project is about applying a program analysis tool on real-world programs.

Resources

Java C# Subjects for experimentation

The Software-artifact Infrastructure Repository (SIR) contains different versions of several real-world programs with seeded bugs.