|
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.
Programming
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
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. |