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)
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)
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)
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.
Algorithm visualizations can be structured or presented in different ways: animation, multiple algorithms, etc. In this paper, we present a presentation format that has hardly been explored, namely to display simultaneously visualizations of a given algorithm for several test cases. By similarity with other presentation formats, we call it the "multiple… (More)
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)