There has been a great interest recently in systems that use graphics to aid in the programming, debugging, and understanding of computer systems. The terms ‘‘Visual Programming’’ and "Program Visualization’’ have been applied to these systems. This paper attempts to provide more meaning to these terms by giving precise definitions, and then surveys a number of systems that can be classified as providing Visual Programming or Program Visualization. These systems are organized by classifying them into three different taxonomies.