In this paper we describe SRec, a system to animate recursion in Java programs. It is intended to assist in algorithm courses to better understand and analyze algorithm behavior. We make several contributions. Firstly, SRec exhibits a comprehensive set of animation and educational features. It provides three complem- entary, coordinated views of recursion:… (More)
Algorithm animations typically assist in educational tasks aimed simply at achieving understanding. Potentially, animations could assist in higher levels of cognition, such as the analysis level, but they usually fail in providing this support because they are not flexible or comprehensive enough. In particular, animations of recursion provided by… (More)
Greedy algorithms are one of the most common algorithm design techniques. Despite their apparent simplicity, their design is a demanding task. As a consequence, they are usually taught and learnt in a passive way. In this paper, we make a new proposal aimed at active learning of greedy algorithms. The paper contains two main contributions. First, we… (More)
A novel approach to algorithm animation consists in displaying algorithms based on their design technique. In this paper, we describe a framework to generate these animations without effort from the instructor. We describe a preprocessing phase that modifies the source code of the algorithm to visualize. When the transformed code is executed, a trace is… (More)
This chapter advocates for an approach to constructing educational tools that consists in designing small systems aimed at achieving clear educational goals and evaluating them in actual teaching situations. The authors addressed this approach with a number of small systems. In this chapter, they describe their experience in the development, use, and… (More)
SRec is an animation system of recursion intended to assist in algorithm courses. We present the main contributions of version 1.1. First, SRec fully supports any kind of recursion. Second, it provides three additional graphical representations for divide-and-conquer algorithms. Finally, it is highly interactive to promote an exploratory style of learning.
Dynamic programming is an algorithm design technique that is very difficult to learn. In this paper, we introduce an extension of the recursion visualization system SRec, intended to support some phases of the systematic development of dynamic programming algorithms: generation of recursion trees, checking redundancy in an adequate recursion tree,… (More)
Visualization technologies can be used to enhance teaching materials. This work is focused on a complex aspect of syntax analysis, syntax error recovery strategies. Compiler visualization is not a new research fi eld, but the authors have not found any visualization tool dealing with this topic. We have enhanced a parser visualization tool called VAST to… (More)