The goal of this project is to develop an exciting, attractive environment for learning computer science through hands-on exploration and experimentation. The curriculum aspect consists of a series of related but reasonably independent learning modules covering the introductory courses through data structures. They are usable by a wide range of students, from high school to university. The modules use graphics and visualization to provide direct exposure to the problems and processes which are important in computation, complementing what can be understood by logic with what can be learned by working with the hands and observing with the eyes. The modules consist of manipulative materials, demonstration programs based on visual representations of important concepts, hypercard-based learning materials, source code, and teaching guides. This project equips a classroom with enough computers so that students can work on line during the class. Such a laboratory enables students to work with the materials in class as concepts are introduced, so that class time becomes a time for doing instead of just watching and listening. It gives faculty a chance to evaluate student comprehension of new material as it is presented and to provide additional assistance where it is needed. The experience in the classroom also introduces students to a style of active learning which they can carry over into other contexts.