Prerequisites: CS 180 or equivalent; graduate standing
Description: Covers the principles, tools, and techniques for disciplined software evolution. Includes migration strategies, change patterns, software maintenance, legacy system reengineering, reverse engineering for program understanding, middleware, source code analysis, software visualization, and program transformation tools. May be taken Satisfactory (S) or No Credit (NC) by students advanced to candidacy for the Ph.D.