Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

program visualization first draft #12

Open
wants to merge 3 commits into
base: trunk
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@
# ones.
extensions = [
'sphinxcontrib.bibtex',
'sphinx.ext.todo'
'sphinx.ext.todo',
'sphinx.ext.autosectionlabel',
]

# Add any paths that contain templates here, relative to this directory.
Expand Down Expand Up @@ -100,3 +101,6 @@ def setup(app):
''',
'extraclassoptions': 'openany,oneside',
}

# avoid duplicate label
autosectionlabel_prefix_document = True
19 changes: 19 additions & 0 deletions src/language-usability.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
@inproceedings{brown1991zeus,
title={Zeus: A system for algorithm animation and multi-view editing},
author={Brown, Marc H},
booktitle={Proceedings 1991 IEEE Workshop on Visual Languages},
pages={4--9},
year={1991},
organization={IEEE}
}

@article{stasko1993methodology,
title={A methodology for building application-specific visualizations of parallel programs},
author={Stasko, John T and Kraemer, Eileen},
journal={Journal of parallel and distributed computing},
volume={18},
number={2},
pages={258--264},
year={1993},
publisher={Elsevier}
}
24 changes: 24 additions & 0 deletions src/language-usability.rst
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,29 @@ API Usability
Program Comprehension
=====================

Algorithm Animation
-------------------

**Algorithm animation** is a powerful approach for exploring a program's behavior. Equipped with different techniques, it has been used with success in teaching computer science courses, designing and analyzing algorithms, producing technical drawings, tuning performance, and documenting programs.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Change first sentence to "Algorithm animation techniques aim to communicate the behavior of algorithms through animated visual notation, sometimes together with natural language commentary."
  • Remove "Equiped with different techniques, "


.. container:: bib-item

.. bibliography:: language-usability.bib
:filter: key == "brown1991zeus"

This paper presents a system for algorithm animation, *Zeus*. To a programmer, *Zeus* can be viewed as a domain-independent framework for associating multiple clien-defined views with a set of client-defined events, generated by a client program called the algorithm. According to the author, constructing animations in *Zeus* appears to be easy and straightforward. The concept of Objects make it easy to reuse views, and to build sophisticated views by composing and subclassing other views.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Change "domain-independent" to "general-purpose"
  • Typo: "clien-defined" -> "client-defined"
  • Change ", generated by a client program called the algorithm" to "emitted while an algorithm executes"
  • If there was no rigorous evaluation, it's worth stating that after the "According to the author" bit, e.g. ", but this claim was not rigorously evaluated"


.. container:: bib-item

.. bibliography:: language-usability.bib
:filter: key == "stasko1993methodology"

An **application-specific** view illustrates the semantics of a program, its fundamental methodologies, and its inherent application domain. The paper discusses why **application-specific** views are necessary for parallel program debugging and several requirements and challenges for such a system. Also, an animation methodology called POLKA is developed to show **application-specific** views help programmers rapidly assess the programs' correctness.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • What does "its fundamental methodologies" mean? What is an "inherent" application domain? Are these phrases from the paper? Consider rephrasing to be more clear about what an "application-specific view" is in the context of this paper.
  • How does this relate to Zeus?
  • Was this system empirically evaluated? If not, state so explicitly as above.


Domain-Specific Languages
=========================

.. container:: hidden

:cite:`brown1991zeus`
:cite:`stasko1993methodology`
66 changes: 66 additions & 0 deletions src/live-programming.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
@article{price1993principled,
title={A principled taxonomy of software visualization},
author={Price, Blaine A and Baecker, Ronald M and Small, Ian S},
journal={Journal of Visual Languages \& Computing},
volume={4},
number={3},
pages={211--266},
year={1993},
publisher={Elsevier}
}

@article{sorva2013review,
title={A review of generic program visualization systems for introductory programming education},
author={Sorva, Juha and Karavirta, Ville and Malmi, Lauri},
journal={ACM Transactions on Computing Education (TOCE)},
volume={13},
number={4},
pages={15},
year={2013},
publisher={ACM}
}

@inproceedings{maletic2002task,
title={A task oriented view of software visualization},
author={Maletic, Jonathan I and Marcus, Andrian and Collard, Michael L},
booktitle={Proceedings First International Workshop on Visualizing Software for Understanding and Analysis},
pages={32--40},
year={2002},
organization={IEEE}
}

@inproceedings{murphy2010interactive,
title={An interactive ambient visualization for code smells},
author={Murphy-Hill, Emerson and Black, Andrew P},
booktitle={Proceedings of the 5th international symposium on Software visualization},
pages={5--14},
year={2010},
organization={ACM}
}

@inproceedings{reiss2005paradox,
title={The paradox of software visualization},
author={Reiss, Steven P},
booktitle={3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis},
pages={1--5},
year={2005},
organization={IEEE}
}

@incollection{de2002visualizing,
title={Visualizing the execution of Java programs},
author={De Pauw, Wim and Jensen, Erik and Mitchell, Nick and Sevitsky, Gary and Vlissides, John and Yang, Jeaha},
booktitle={Software Visualization},
pages={151--162},
year={2002},
publisher={Springer}
}

@inproceedings{goodall2010visual,
title={Visual analysis of code security},
author={Goodall, John R and Radwan, Hassan and Halseth, Lenny},
booktitle={Proceedings of the seventh international symposium on visualization for cyber security},
pages={46--51},
year={2010},
organization={ACM}
}
67 changes: 67 additions & 0 deletions src/live-programming.rst
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,64 @@ Interactive Debuggers
Program Visualization
---------------------
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's move all of the Program Visualization stuff here into the Program Comprehension chapter, instead of splitting it like this. If there is a "live" program visualization system, i.e. one that keeps visualizations updated during the editing process, then you can include a section here called "Live Program Visualization" to specifically mention that. However, the examples below seem to all be standard program visualization tools that are not deeply integrated into editing.


**Program visualization** is the use of various techniques to enhance the human understanding of computer programs from distinct aspects including the structure of the source code and run-time behavior.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • change "enhance the human understanding of" to "help programmers comprehend"
  • change "computer programs from distinct aspects" to "computer programs. Program visualization techniques take into account various sources of information, "


There are **program visualization** systems designed to aid significantly the practice of professional programming and software engineering as well as the learning of computer science by novice programmers. And it turns out that **program visualization** doesn't have to deal with toy programs, e.g., `Frappe - Visualizing Code Dependency Graphs <https://softvis.wordpress.com/2018/08/31/frappe-visualizing-code-dependency-graphs/>`_.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Don't bold "program visualization" every time you use it
  • Change the structure of this sentence to "Some program visualizations are designed to aid... while others are focused on aiding..."
  • I'm not sure what "it turns out that program visualization doesn't have to deal with toy programs" means? Do you mean that program visualization systems can scale to large programs? If so, and you want to mention the Frappe work, you should do it as a normal citation, not as a link to a blog post containing a video.


.. container:: bib-item

.. bibliography:: live-programming.bib
:filter: key == "price1993principled"

Note that **program visualization** is different from **software visualization** in that the latter includes the visualization of a high-level description of algorithm or a piece of software which is in contrast to **program visualization** where actual implemented code is visualized.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This note should be in the introduction of this section, rather than as the summary of this paper. What was this paper specifically about?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really a long paper going over dozens of software visualization systems and try to categorize them along the dimension described in the paper. And it also mentions some historical stuff and limitation of software visualization as well. I think most part of this paper is actually overlapping some other papers in some way(e.g. this paper spends a lot of time describing dimensions, but in a more detailed way than maletic2002task).
Personally, I can't think of a good way to put it in the compendium. What's your opinion?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rename the top level section to "Software Visualization", cite this paper first, then have a sub-section for Program VIsualization


.. container:: bib-item

.. bibliography:: live-programming.bib
:filter: key == "maletic2002task"

This paper defines five dimensions, Tasks, Audience, Target, Representation and Medium to describe several software visualization systems that have very different features along those defined dimensions. By realigning taxonomies with the perspective of current software engineering problems, open research issues are identified. Additionally, the paper identifies the strengths of individual tools and the techniques they apply.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Might be worthwhile to bullet point the five dimensions and briefly describe what they mean here.
  • What does "realigning taxonomies" mean? Consider rephrasing more clearly / not using jargon


.. container:: bib-item

.. bibliography:: live-programming.bib
:filter: key == "sorva2013review"

This paper serves as a survey of program visualization systems whose **task** is to aid the learning and teaching of introductory programming, with an intended **audience** of novice programmers and *CS1* teachers. Even a visualization that has been painstakingly crafted to be as lucid as possible may fail to aid learning in practice. Therefore, the paper introduces a new taxonomy to describe how program visualization systems engage learners.

.. container:: bib-item

.. bibliography:: live-programming.bib
:filter: key == "murphy2010interactive"

**Code smells** are characteristics of software that indicate that code may have a design problem. The paper propose a novel smell detector, Stench Blossom, that provides an iteractive ambient visualization designed to first give programmers a quick, high-level overview of the smells, and then to help in understanding the smells if users wish. As a result, the experiment confirmed that programmers identify more smells and make more confident and informed refactoring jedgements using the tool than not using the tool.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

good!


.. container:: bib-item

.. bibliography:: live-programming.bib
:filter: key == "reiss2005paradox"

This paper argues that most past and current work in the field is out of touch with the reality of software development and that new approaches and new ideas are needed.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, is there some more specific insight that this paper has? This is very vague.


.. container:: bib-item

.. bibliography:: live-programming.bib
:filter: key == "de2002visualizing"

Jinsight is a tool for exploring a Java program's runtime behavior visually, featuring a collection of linked views.

- a basic visualization of resource consumption in terms of classes, instances, and methods
- a reference pattern view with extraneous detail eliminated that could detect memory leak
- a performance analysis by visualizing event sequences

With Jinsight, users have successfully diagnosed numerous problems on large commercial applications. However, the visualization is specialized for particular tasks and the visualized application could only run on a single *JVM*.

.. container:: bib-item

.. bibliography:: live-programming.bib
:filter: key == "goodall2010visual"

This paper describes a system that brings together the results of disparate software analysis tools into a visual environment to support the triage and exploration of code vulnerabilities. The system could give more confidence that the detected vulnerabilities are not false positive by correlates and normalizes the output of multiple software analysis tools. And the user may also wish to associate the vulnerability with the programmer who regularly checks in the code with vulnerabilities or the main developer that modifiers more code than anyone else. This workflow allows the system to scale to large code bases with tens of thousands of vulnerabilities.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • This may not exactly fall under "program visualization", since what is being visualized is the result of a program analysis. However, you can leave it here for now.
  • "by correlates and normalizes" -> "by correlating and normalizing"
  • "And the user may also wish to " -> "The user can also "
  • Not sure I understand "the programmer who regularly checks in the code with vulnerabilities or the main developer that modifiers more code than anyone else"? is it trying to assign "blame" for each vulnerability in some heuristic way? think about a way to describe this more clearly


Programming by Demonstration
============================
Expand All @@ -47,3 +105,12 @@ TODO: in music
Programmable Physical Environments
==================================

.. container:: hidden

:cite:`price1993principled`
:cite:`maletic2002task`
:cite:`sorva2013review`
:cite:`murphy2010interactive`
:cite:`reiss2005paradox`
:cite:`de2002visualizing`
:cite:`goodall2010visual`
9 changes: 8 additions & 1 deletion src/notation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,12 @@ Customizable Notation

Cite Schwerdfeger and Van Wyk

.. container:: bib-item

.. bibliography:: notation2.bib
:filter: key == "brown1992color"

This paper focuses on the use of color and sound in **algorithm animation** systems. Color has been used in *Zeus*, a system for algorithm animation and multi-view editing, for the purpose of encoding the state of data structures, typing views together, highlighting activity, emphasizing patterns, and making history visible. Besides, the postive preliminary experiences using sound in *Zeus* show that sound will be a powerful technique for communicating information. See :ref:`language-usability:Algorithm Animation` for more details.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • This should be in the section about "Secondary Notation"
  • What does "typing views together" mean?
  • Don't use "Besides" as a transition in technical writing
  • Change the sentence to explain how sound was used in the paper (what information did it communicate?)


.. container:: hidden

Expand All @@ -203,4 +209,5 @@ Customizable Notation
:cite:`petre2006cognitive`
:cite:`hughes95`
:cite:`wadler2003prettier`
:cite:`bernardy17`
:cite:`bernardy17`
:cite:`brown1992color`
11 changes: 11 additions & 0 deletions src/notation2.bib
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,14 @@ @article{bernardy17
biburl = {https://dblp.org/rec/bib/journals/pacmpl/Bernardy17},
bibsource = {dblp computer science bibliography, https://dblp.org}
}

@article{brown1992color,
title={Color and sound in algorithm animation},
author={Brown, Marc H and Hershberger, John},
journal={Computer},
volume={25},
number={12},
pages={52--63},
year={1992},
publisher={IEEE}
}