There is a significant difference between designing a new algorithm proving its correctness & teaching it to an audience. When teaching algorithms the teacher's main goal should be to convey the underlying ideas & to help the students form correct mental models related to the algorithm. This process can often be facilitated by using suitable metaphors. This work provides a set of novel metaphors identified & developed as suitable tools for teaching many of the classic textbook" algorithms taught in undergraduate courses worldwide. Each chapter provides exercises & didactic notes for teachers based on the authors' experiences when using the metaphor in a classroom setting."