This paper presents a technique for automatically generating graphical presentations of a program execution. Viewers can customize the presentation and examine particular aspects of the running computation by creating a specification of the program's entities and properties of interest. We identify three goals for visualizations that display consecutive computation states, known as program visualizations. First, a visualization must present all of the entities and properties described by viewers and no other information. Second, the graphical representations assigned to various program entities must be sufficiently distinctive to permit views to easily recognize entities of different types, despite similarities in graphical characteristics denoting common properties of those entities. Third, to maintain continuity of the animation over time, graphical elements used to present one state of the program must be reserved and subsequently used to represent the same or similar entities or properties in other states. Based on these goals, we have developed an algorithm that assigns graphical objects to each program entity of interest. The algorithm relies on a characterization of the available graphical objects and attributes to determine the graphical elements that best display the data contained in the entities and their properties. For views that have a greater number of properties than the available number of graphical elements, we have developed heuristics for deciding which properties can be depicted by overloading the same graphical attribute. The automatic presentation is flexible and permits viewers to intervene and determine entirely or partly the graphical design of a visualization.