In order for students to succeed in this class, they had to spend as much time working and struggling with the course software, as they did learning the course material.
What they needed was an intuitive, somewhat transparent program that allowed them to design, test, and simulate logic circuits; a program that was not only functional but helped them learn the course material instead of presenting roadblocks to their understanding and knowledge.
Clearly, there is a trend toward a more graphical notation; this follows the general trend in user interfaces away from the "command line" and toward more sophisticated graphics. But maybe this isn't always a good thing. Sometimes, a GUI can hide complexity (not necessarily a good thing in an educational setting), and some things just can't be captured nicely in a graphical way (maybe this is behind the need to "tweak" the output from LSGUI)
Can software alone fix these types of problems? What else may be an important part of an effective solution?
How might you distinguish usable and useful in from this story. i.e. "...a program that was not only functional (usable) but helped them learn the course material (useful) instead of presenting roadblocks to their understanding and knowledge."
Education Software issues
Risks of software in an educational setting: too much complexity will lose the students, but you don't want to "dumb things down".
Similarly, hiding details can make things clearer, but you also want to give students the experience of seeing what's really going on "under the hood", even if it's ugly.
Grading assignments is very time-intensive; how much complexity and realism are you willing to sacrifice in an assignment in order to make it gradeable in a reasonable amount of time?