Design a pedagogical tool that provides a visual editor allowing users to build circuits of their choice and a means to follow the logic flowing through the circuit.
General Requirements
1. Provide visual NOT, AND, NAND, OR, NOR, and XOR gates. 2. Allow users to provide inputs, toggle inputs, and follow calculation of outputs. 3. Animate the logic flow through each gate of the circuit. The user should be able to step through the circuit one gate at a time, execute up to a given gate, back up to a previous state, and execute the entire circuit by setting the speed of the animation. 4. Provide a meta-circuit builder that forms/stores new circuits from existing configurations. New circuits can then be used in circuit construction. 5. Define a file format that describes a circuit. Your application must be able to save to and read from such a file but you might consider allowing the file to be altered outside of the application as well. 6. Allow the user to print the visualization of the circuit as well as the circuit’s file description. 7. Provide functions to move, copy, paste, insert, delete portions of a circuit visually. 8. Of course, provide examples of valid circuits, sample problems to solve, and a help option.