beginning of content:

Contributed by David Reed
Creighton University
Omaha, Nebraska

I recently ran across an amazing educational toy that can serve multiple purposes in a computer science course. Electronic Snap Circuits, made by Elenco Electronics Inc., is an electronic project kit that allows one to build and experiment with circuits. It contains a variety of components, including switches, buttons, light bulbs, a fan, a microphone, and sound chips. What makes this kit innovative, however, is the manner in which components are connected. Instead of wires, which can be tricky to connect and difficult to keep straight, the Snap Circuits kit builds wires into plastic connectors that snap together on a plastic grid. It's incredibly simple and visually appealing as well. The basic kit contains 300 projects, and retails for about $50. It allows students to build a variety of circuits, ranging from simple (a light bulb controlled by a switch) to complex (a helicopter that launches at the push of a button and a sound-triggered alarm). The Snap Circuits Pro kit contains additional components and 200 more projects, and retails for about $80.

From a computer science perspective, these projects allow students to physically experience logic design and gain an appreciation of the low-level components of computers. Instead of studying OR, AND, and NOR gates in the abstract, a student can actually build them out of connectors and switches. The basic components even include PNP and NPN transistors, so more advanced projects can experiment with their behavior. In the Pro kit, advanced projects involve building logic to control a seven-segment LED and a light-sensitive FM radio.

Another interesting aspect of the kit is the manner in which projects are described. Instead of step-by-step instructions for building a circuit, the project manual depicts each circuit with a diagram, annotated with numbers to constrain the order in which components need to be placed. In effect, this defines a non-verbal algorithm for building the circuit, a concept that is worthy of discussion in a programming course.