Home About the Lab People Projects Publications
Explanatory Visualization Environments

Every teacher of a course dealing with a professional programming language such as C++, or Java, data structures, or algorithms is well aware about a number of hard to understand topics that are known to create problems for nearly every student. Such topics as buffer overflow or pointer arithmetic are challenging to explain and understand. To explore the value of explanatory visualization in helping teaching and learning complicated programming topics, we have encouraged a number of graduate students taking an Interactive System Design class (IS2470) to develop explanatory visualization systems for various topics. The educational goal of the project was to practice usability skills learned by the student in the course (user studies, design, development, and evaluation). This page provides links to several environments developed by our students. While all these environments are results of student projects, they are really useful for practical teaching and learning.

Each environment presents visually one or more problem situations. On the screen the student can see the code of the program and visual representation of data that is designed to help the student understand the demonstrated aspect. The student can navigate through the execution of the target program forwards and backwards. Each step of the execution is visualized (i.e., the environment dynamically shows all changes in data introduced by the current step) and enhanced with a narration that explains what has happened, why it has happened, and which lessons can be learned from that step. It is these explanations that we consider critical for understanding of visualized concepts. Please, see more information in the help files provided with the environments below.

Parameter Passing
Loop viewer
For Loop Applet
Scope of the variable(s) in C
Parameter Passing Tutor
Variable Scope (Deployed in Knowledge Tree portal)
Pointer Arithmetic in C

Data Structures and Algorithms
Socket Demonstration
Dijkstra's Algorithm
Hashing Algorithm
Dijkstra's Shortest Path Algorithm
Visualization of Sorting
Generic Algorithms
LZW Compression 1
LZW Compression 2
Learning Binary Trees in C

Developing Secure Systems
Visualization of Encryption
Advanced Encryption Standard (AES)
Buffer Overflow 1
Buffer Overflow 2
Buffer Overflow 3

This project is currently supported by NSF Directorate on Computer and Information Science and Engineering through Award #0426021

Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.



2004-2005 School of Information Sciences, University of Pittsburgh
135 North Bellefield Avenue, Pittsburgh, PA 15260
Tel: 412.624.5230, Email: inquiry@mail.sis.pitt.edu
Last updated 2006-06-13