CS Department Logo

COMS W4117
Compilers and Interpreters:
Software Verification Tools
Fall 2007
 Announcements
  Class meets in Mudd 337, 11:00am-12:15pm, Tuesdays and Thursdays.

At 4:00pm Thursday, November 1, in Davis Auditorium Bjarne Stroustrup of Texas A&M University gave a seminar on the new ISO Standard for C++ as part of the Columbia University Department of Computer Science Languages and Compilers Seminar.

At 11:00am Tuesday, November 25, in the CS Conference Room Tom Ball of Microsoft Research gave a seminar on the design and analysis of static analysis tools as part of the Columbia University Department of Computer Science Languages and Compilers seminar.

At 11:00am Thursday, December 6, in Mudd 337 Kedar Namjoshi of Bell Labs will give a seminar on "The Speed vs. Precision Trade-off in Static Program Analysis" as part of the Columbia University Department of Computer Science Languages and Compilers Seminar.

Schedule of project presentations on your chosen verification tool: Final project reports are due Dec 6.
 Teaching Staff
 Name   email   Office hours    Location 
Prof. Al Aho   aho@cs.columbia.edu   Tue 2-3 & Thu 1-2   513 CSB
 
 Course Overview
  This course will focus on the use, design, and implementation of new software verification tools that are being increasingly used by software developers in industry to create more reliable software systems. You will learn about the most commonly used static analysis and model-checking tools such as Microsoft's device-driver verifier and Gerard Holzmann's spin model checker. You will learn about the algorithms used by these tools. Many of these algorithms are based on data-flow and program analysis techniques used in modern optimizing compilers.

The concepts, techniques, and tools that you will learn in this course have broad application to all phases of software development.

There will be a semester-long project in which students will work in teams of two to learn how to use one of the new verification tools. At the end of the course each team will hand in a written report and make an oral presention to the class on the verification tool.

 Prerequisites
  Fluency in C and Java
  COMS W4117 Compilers and Interpreters: Software Verification Tools
 Schedule 2007
Date  Lecture  Reading 
Sep 4   Introduction to Course  ALSU Sects. 8.4, 8.5, 9.1-9.3  
Sep 6   Introduction to Software Verification   Check out some verification tools  
Sep 11   Foundations of Software Verification   Ball and Rajamani  
Sep 13   Flow Graphs   ALSU Sects. 8.4, 8.5, 9.1 
Sep 18   Data-Flow Analysis   ALSU Sect. 9.2  
Sep 20   Foundations of Data-Flow Analysis   ALSU Sect. 9.3  
Sep 25   Data-Flow Analysis Frameworks   ALSU Sects. 9.3, 9.4  
Sep 27   Loops in Flow Graphs   ALSU Sect. 9.6  
Oct 2   Verifying Safety Properties in Flow Graphs   Tom Ball's CSE599L website  
Oct 4   Pushdown Systems and Temporal Safety   Tom Ball's CSE599L website  
Oct 9   Chuck Mitchell on Phoenix    
Oct 11   Marc Eaddy on Static Analysis and Phoenix   Static Analysis for Java 
Oct 16   Interprocedural Analysis   ALSU Sect. 12.1  
Oct 18   Applications of Interprocedural Analysis   ALSU Sect. 12.2  
Oct 23   Datalog   ALSU Sect. 12.3  
Oct 25   Marc Eaddy: Wicca   
Oct 30   Project Overview Presentations    
Nov 1   Project Overview Presentations    
Nov 8   Binary Decision Diagrams   ALSU Sects. 12.4-12.7  
Nov 13   Project Overview Presentations II    
Nov 15   Project Overview Presentations II    
Nov 20   Model Checking    
Nov 27   Tom Ball: Design of Static Analysis Tools    
Nov 29   Tom Ball: Abstract Interpretation    
 Recommended Text
  Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman
Compilers: Principles, Techniques, and Tools, Second Edition
Pearson Addison-Wesley, 2007, ISBN 0-321-48681-1
 Class Policies
  Grading 50% Project Report
  50% Class Presentations

aho@cs.columbia.edu Updated Sep 1, 2007