A good intermediate representation is the key to a good compiler, because it determines both how we can think about optimizations and how effective those optimization can be. For example, classical static single assignment (SSA) form is very successful in serial compilers for both these reasons. However, SSA form is not very helpful for the analysis of loop and array based codes for parallel targets. We present a new Dynamic Single Assignment (DSA) form, designed specifically for analysis and transformations of array and loop-based codes. We present the basic step needed to generate it from serial code. Future work will address the use of this intermediate representation in the analysis and optimization of parallel code. 62 Pages