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 complementary, coordinated views of recursion: traces, the execution stack and activation trees. SRec allows the user constructing and modifying animations without effort. The animation can be played flexibly, both forward and backwards. It also provides facilities to integrate animations into courses. Secondly, the paper describes the educational features of the system and its use in algorithm courses. Thirdly, the system has been fully evaluated with respect to usability (using formative and summative methods) and has been compared to other systems reported in the literature. The results of both evaluations are highly positive.