This research will develop a semantic framework for program optimization and parallelization. Initially, concentration will be on developing a denotational and an operational semantics for program dependence graphs, since they are the most important graph-oriented program representation for parallelizing compilers. It is intended to incorporate the semantics into an interactive (Lisp-like) interpreter (possibly integrated with an editor) that allows a compiler writer to test ideas about graph transformation and code generation techniques. Later plans are to extend the operational semantics into a calculus for the formal verification of graph transformations.