From CS 294-10 Visualization Sp10
- Paul Oppenheim
Software is often difficult to explain. Code authors frequently comment source code, write unit tests, and write external documentation. Additionally, developers use whiteboards and diagrams to communicate how their software works. Are there universal guidelines about diagrams relating to software and algorithms? What are the practical applications that can be taken today given the body of research on the subject?
One of the most immediate needs of anyone interested in answering this question is a practical tool for generating graphs given pseudocode / visual-code annotations. Ideally, such code would be embedded inside the code itself in the comments along with other documentation. Tools currently used for extracting comments (e.g. Doxygen, Sphinx, etc.) could be enhanced to process additional syntax to generate images. Documentation generated from such tools is typically HTML with other web-friendly data types; as such, it would be expected that diagrams in the software would be similarly web-standards friendly.
This project will be to:
- research the existing body of work regarding algorithm visualizations,
- create a simple, usable language to draw the primitives outlined in the existing work,
and ideally continue on to:
- generate an extension to an existing documentation tool which processes this graphing language, and
- to give a simple example by explaining some algorithms in a piece of existing software with these annotations.
This project will NOT:
- be suitable for general-purpose image generation
- automatically generate graphs based on non-annotation source code in any language
- reimplement DOT - http://www.graphviz.org/
- reimplement processing - http://processing.org/
- draw UML
- the graphs will be informal, to the user's specification (possibly to UML, but ideally *mostly* arbitrary)
- UML will play a role in minimal flexibility (as in, minimally a user should be able to specify something close to existing UML diagram types)
The intent of this project is to create a simple language to specify algorithm visualization primitives. Completion of all four goals would merely be a gateway for further adoption.
Initial Problem Presentation
- plain text: FP-PaulOppenheim-presentation-1
Midpoint Design Discussion
- Link to slides here
- Link to source code and executable
- Link to final paper in pdf form - http://pauloppenheim.com/portfolio/2010-berkeley-vis-final-paper/final.pdf
- Link to final slides or poster