Visualizing Computation

Diagrams play a central role in communication in many fields, and computer science is no exception—our classroom lectures, research talks, textbooks, and Wikipedia pages are full of visual material to complements to our words. The forms of these diagrams are typically defined vaguely if at all. While this may be appropriate in a lecture setting, uncertainty about the diagram can lead to confusion as students study their notes or books. Visualizing Computation is an archive of definitions of useful visualization techniques that are often used in lectures without extensive discussion.

Scope
Each page of this book covers a particular approach to visualizing some aspect of the execution of software. Each page should serve as a stand-alone definition of the diagram style, but not a complete description of the system being visualized. For example, Visualizing Computation describes diagrams that can be used to illustrate stack frame layout or evolving stack frame layouts, but leaves the definition and use of stack frames for the Wikipedia call stack entry or professor's lectures. The visualizations themselves may be static illustrations of static entities, techniques for capturing evolution-over-time in a static image, or (in principle) animations.

Why a Wikibook?
This book is designed to collect topics too specialized even for Wikipedia's notability policy ("Wikipedia is not a directory of everything in existence"). In particular, descriptions of interesting local variations in drawing style are encouraged, not discouraged. This project itself stems from repeated observations by Wonnacott's students at Haverford College, who pointed out the difficulties of taking good notes when the professor keeps erasing and overwriting the same diagram.

Contributing
Policy: If a diagram you draw or see isn't defined in this text, please add it (or have your student add it). Refer to the style guide for ideas of what belongs in a page, or the quick-start guide if you have never added to a Wikibooks or Wikipedia entry before.

Note to authors of papers and textbooks: According to the answer I got in the reading room, uploading your content constitutes a non-exclusive grant to copy. As I understand things, this means you can still use the version you uploaded however you like (as long as you don't grant someone else an exclusive copyright), so you can still include your original material in non-GFDL documents (though you should probably make a traditional publisher aware of the GFDL version that's out there). If you are unsure about the legal status of material you are using, it should be sufficient to pick a different example and draw a fresh diagram that's not covered by someone else's copyright.

The Visualizations

 * Memory layout and memory evolution diagrams
 * Drawings of call trees
 * Drawing graphs of data-flow among statements of a function or among different executions of statements
 * /Function Machine/