After TA-ing for Introduction to Computing I realized several important facts regarding the current LC3 simulator:
- It has a crappy UI riddled with bugs
- It sucks even more when automating grading
- Students gain no direct exposure to powerful text editors (Vim, emacs, sublime...)
- There is no obvious reason to use the command line simulator
- And related, there is no good unit testing framework **GASP**
In fact, the built in debugger (generally used for grading) only allows absolute-addressable memory accesses. This makes grading assignments like sort, where some students implement stable sorting and other unstable sorting, a real pain in the posterior.
Furthermore, the *Nix simulators have no support for interrupts. This alone is a reason to throw out the current simulators. Ultimately, students should develop on Linux. The command line tools + ease of scripting provided by Linux truly help students transition to their later courses.
The New LC3 Simulator
Understandably, my colleagues and I decided the throw the current LC3 simulator-- especially LC3-Edit -- rewriting everything from scratch. The simulator itself will be decoupled from the interface meaning the GUI and the CLI will use the same simulator. Interestingly enough, this style of interface allows us to expose the simulator to higher level languages. In fact, we plan to expose python wrappers so end users can write unit-tests + graders in python. We chose python for its ease of integration, general power, high readability, and low learning curve.
On the other hand, we will write the GUI in Qt. Qt is a powerful c++ graphics library which is pleasant to work with, generates sleek and modern GUIs, and is portable across Linux/Windows/Mac.
If all goes well, we will have a working draft by then end of June 2015 and a release version by the end of Summer 2015.
Will Keep You Updated!