Sophisticated program analysis and transformation tools are needed in many areas such as high-performance computing, software engineering, and secure computing. For example, modern high-performance computers are complex networks of symmetric multiprocessor nodes in which each processor is pipelined or even multithreaded as in the recently-announced IBM Blue Gene machine, so sophisticated compilers are needed to deliver performance to applications. The Y2K bug highlighted the need for better automatic tools for software engineering and maintenance.
The objective of this course is to understand what is known about program analysis and automatic restructuring, study a number of problem domains to understand what problems can be solved with existing technology, and determine what technology needs to be developed. Some of this technology was developed at Cornell, and is in use in production compilers at SGI, IBM, Intel and other companies. An indirect objective of the course is to gain an appreciation for the use of algebras (such as lattice, polyhedral and relational algebras) to provide clean program abstractions that permit the design of modular software tools.
Students will implement programming projects on high-performance work-stations and the AC3 cluster in the Theory Center. In addition, there will be three or four homework assignments, some of which may require programming.
Last Modified: Thursday, January 18, 2001 12:07:47 PM