The discussion in this section applies to almost all data parallel languages that provide an explicit form of parallel assignments. For the sake of specificity, we use the UC[Bag] language as an explicit example. UC has been implemented on a variety of architectures including a distributed memory SIMD architecture (Connection Machine CM-2), a multicomputer (IBM SP 2) and an SMP architecture (SparcStation1000). The primary considerations in choosing UC rather than other widely used notations was easy access to the compiler source code that would facilitate implementation of some of the techniques described in this chapter.