ByteWeave is a web-based application that allows students to simulate digital circuits using a variety of logic gates, including AND, OR, NOT, NAND, NOR, INPUT, OUTPUT, and Seven Segment Displays. Instructors can also create assignments with custom logic circuits that are automatically graded.
The truth table generated from the assignment is wonderful. A cool enhancement would be to add another set of output columns showing what the circuit is currently generating (actual vs expected). Or perhaps highlighting which cells in each output column aren't currently being matched.
To select a gate, you can double-click anywhere on the "tile", but double-tapping doesn't work the same way. Only the output circle seems to be sensitive to double-tapping. Tested on both iPad (Safari) and laptop (Chrome).
Nothing groundbreaking--it would just be nice to be able to pick the names of the inputs & outputs. Might be as simple as including a "name" key for each of the items in the "inputs" list in the assignment JSON file.
... since there's no keyboard. Consider providing on-screen buttons to disconnect or delete the selected gate (eventually only visible when a gate is selected). Toggling an input's state could work the same way.
Since the expected truth table is already in the assignment file, it would be nice to generate the truth table students see from that. In theory, it should "just" be a simple HTML table with a little styling. Once that's done, it would be nice to add a setting in the assignment file to determine whether to display the auto-generated truth table for each challenge or not.
When using a high sensitivity screen the long press feature does not work since it is registered as a move input due to the sensitivity of the screen. Maybe a two finger press could help this issue. Also check how far the move input was could work.
I like the context menu (though I haven't gotten a chance to try it on my iPad yet). I'd prefer to have "connect" or "disconnect" be the default when I click on a gate's input/output bubbles (depending on the current connection state, and perhaps a confirmation for disconnection, since it's destructive), and "toggle" be the default when I click on the input itself.
I've occasionally "lost" a new gate (or mistakenly added several) because the new tiles always show up in the same place. What do you think of a click-to-place process instead, where you click on the gate you want, and then click again where you want it to show up? In this case, it would help if the selected gate remained highlighted in the menu on the left until it was placed.
Another possibility would be to drag (a clone of) the gate from the palette on the left. That might be more complicated, both to implement and to use--I'm not sure. I'd like to hear your thoughts on this, though.
The default red = 0 = off and green = 1 = on are pretty standard. And the connection nodes show 0 or 1, so it can still be read without relying on the colors. However, red/green colorblindness is a reality for about 8% of Caucasian men, and many others, so it would be good to consider other alternatives.
Since we're not getting input from anywhere else (i.e., no nested circuits), it might make sense to use an actual switch as the visual representation of an input. Perhaps one of these:
These are fairly small details. Spit & polish. ;-)
"Logical Gates" above the left pane should be "Logic Gates". Actually, they're not all gates, so perhaps "Components" would be better.
"Provided Resources" at the bottom of each description are obviously provided, so just say "Resources"
"7 Seg Display" should use a single 7-segment display in the icon, and if it were labeled "7-Seg Disp", the whole column of components could take up less space.
Th ability to select which pin to connect to is great! For gates with only 1 input (NOT, OUTPUT), however, it's a superfluous step. Would it be possible to skip the selection step if the receiving gate only has 1 input?
I think the receiving pin selection step could also be skipped if there's only 1 input pin that's not currently connected on the receiving gate, but I'm not as certain about that. Might be worth considering, though.
On the 7-segment display, it's a bit odd that input 0 is the 8s place, input 1 is the 4s place, etc. It would be nice if the inputs were either numbered from least to most significant (input 0 = 1, input 1 = 2, input 2 = 4, input 3 = 8, so the input number is the power 2 is raised to), or actually had their place values (i.e., named something like 1s place, 2s place, 4s place, 8s place).
Making the whole input or output gate show its state would make it far more obvious. I think this is more important for outputs than inputs, but might be as simple as changing the background of the main tile.