CS 395T: Program Transformation and Analysis using Industrial Tools

Fall 2012

Tuesday/Thursday 3:30-5pm Welch 3.402

Instructor: Dr. Ira Baxter

Course Description

Personal note to CS and ECE graduate students from Don Batory, CS Professor:  This may be a once-in-a-lifetime opportunity for you to get hands-on experience with a commercial-grade program transformation system (there are very few of these) and the opportunity to learn from someone who has been at, what I consider, to be at the leading edge of truly modern software engineering. 

As software systems grow more complex, they become more difficult to understand and revise by purely manual approaches. Metaprogramming applies programming to the task of analysis and modification programs. While many programming languages provide some built-in but limited metaprogramming facilities (templates, reflection, ...), program transformation systems provide the metaprogrammer with complete access to the program structure to enable arbitrary metaprogramming.

This class provides students with hands-on training in use of one of the extremely few industrial-strength program transformation systems, the DMS Software Reengineering Toolkit® from Austin-local Semantic Designs. DMS has been used to implement static analysis tools such as clone detection, dynamic analysis tools including erroneous pointer usage in C programs, and complete language migration tools.

Students will learn the basic architecture of a practical program transformation system, detailed techniques for defining languages ("domains") to be processed, how to implement various types of analyzers for those languages, and how to write and apply source-to-source program transformation rules, both to simple languages and to real languages such as Java or C++. The course is structured as lectures on theory, tool concepts and mechanics; students are expected to do a variety of exercises using DMS.

The instructor (Dr. Ira Baxter) will be assisted by Semantic Designs staff both in lecture and exercise coaching. Students will be provided with personal copies of DMS for class use; those that complete the course will be granted a research license. Students must bring an x86 based PC with a minimum of 4Gb RAM and 200Mb of disk space.

Topics will include the list below.  Topics in yellow assume the corresponding background knowledge; they are covered to enable the students to describe the required knowledge quickly, to enable the student to work on interesting applications of DMS rather than struggling to describe the language he wants to process.

Lectures build strongly on one another. For a final project, students will build a custom tool of their choice on a domain-specific language or on Java.

Prerequisites: programming maturity, effective working knowledge of C and Make, some knowledge of Java, and a basic compiler course.

 

Student Presentations

Students will present a related technical paper of their choice, and later, a description of thier class project. Exact schedule for students can be found here.

Office Hours and Location

Thursdays 2:00-3:30 ACES 6.302

Link to shared class forum for DMS class questions and/or programming issues.
Help for students checked twice a day by Dr. Baxter or SD staff. Useful to log your issues here, as other students may see (or even respond!)
Forum signup link, do this first!

Technical papers

Accessible here

Class Schedule (subject to change)

Accessing documents from this page

Students have reported trouble accessing documents through links on this page. Make sure you access this page from the official University course page www.cs.utexas.edu/graduate-program/courses/class-homepages or this link to get the right permissions.

Completed Lectures

Source Files