CS392F: Feature Oriented Programming
Spring 2008

Instructor Prof. Don Batory   batory@cs.utexas.edu
Office Hours By Appointment
Room CPE 2.212
Time MW 2-3:30pm
Unique# 55853
Ground Rules Rules of Conduct and Academic Honesty
Your Grades EGradeBook

Presentation Schedule

Winning AOP Assignment (zip file)

Overview

First there was structured design with programming languages like C and Pascal.  Then object-oriented design and programming languages like C++ and Java emerged.  Now we have components and component infrastructures.  But what's next?  This course surveys exciting leading edge paradigms for software design that exploits advances in:

The integration of the above areas seems daunting. Yet a spectacular example of their integration was realized almost thirty years ago: relational query optimization (RQO). A relational query is specified in SQL, a parser maps it to an inefficient relational algebra expression, a query optimizer optimizes the expression automatically, and an efficient query evaluation program is generated from the optimized expression. SQL is a prototypical declarative DSL. Query evaluation programs are specified as compositions of relational algebra operations; relational algebra is a prototype for compositional programming. Automatic programming is achieved by query optimizers that rewrite an inefficient expression/program to a semantically equivalent but more efficient expression/program. The cost models that drive expression optimization are examples of program analysis. Mapping a relational algebra expression to an efficient program is generative programming and is an elementary example of model driven design

A "holy grail" of Software Engineering is to replicate the success of RQO in other domains. Feature Oriented Programming (FOP) is a generalization, and its ideas are at the confluence next-generation research topics in:

Course Prerequisites

The prerequisites of this course are:

Lecture Notes, Texts, and Software

Lecture notes and required readings for the course are at the Texas Union Copy Center.  Additional notes will be posted (here) or will be available at the Copy Center as they become available.  Texts (click link for details): We will use prototype Java-based tools that may be updated periodically during the course.  ATS (AHEAD Tool Suite) runs on both Windows and Linux, and requires tool support from several vendors. You'll need 150MB for the software that will be installed, preferably on a Windows-based platform. You can download its executables and installation instructions here. Additional software will be posted below as it become available. You will also need to install AspectJ, whose web site is here.

Class Grades, Projects, and Homework

Grades for this course are determined by the following weighting: Each student (or pair of students) will complete an approved project by the end of the class.  A classroom presentation on the project is expected.  Details on the projects will be announced later. Homework is to be submitted via email as a zip (or .zipp) file.  (UT mailers may strip .zip files from email messages.  Rename your .zip file to .zipp for it to go through).

Course Outline

Papers in yellow are required readings, and are found in the packet sold at the Texas Union Copy Center.  (#) indicates approximate number of class dates per subject.  indicates that the lecture has code examples which can be downloaded as zip files. designates a homework assignment.  Optional lectures are indicated in blue. Required papers are to be read prior to each class.

Part 1: Basics (10 Lectures)





Part II: Advanced (12 Lectures)






Part III: Outlook (4 classes)