The Itty Bitty Computing Machine
The Itty Bitty Computing Machine (IBCM) is a machine language meant to provide a one-week introduction to machine language in a CS2 or CS3 course; this web site is an interface to emulate IBCM programs. IBCM was developed at, and is still used by, the University of Virginia in CS 2150, Program and Data Representation, to teach machine language.
The IBCM simulator, along with all the documentation and source code, is availabe on github at http://github.com/aaronbloomfield/pdr. All the materials are released under a Creative Commons Attribution-ShareAlike 4.0 International License.
There are a number of documentation sources:
- A book chapter on IBCM. This is available in the github repo, specifically here.
- The directions page for the online simulator.
- An article on IBCM: IBCM: The Itty Bitty Computing Machine: A One-Week Module To Teach Machine Language In Computing Courses, published in SIGCSE 2011.
Be sure to look at the browser compatability section at the bottom of the directions page. And please report any bugs you found via the github repo (just fill out an issue).
The simulator page is a PHP script, which means that it will not work if you are viewing it as a local file (i.e., if the beginning of your URL is "file://" instead of "http://"), or if the web server hosting this page does not have PHP installed (this includes UVa's Collab web server).
Mirrors
The IBCM interface is hosted at the following locations, which all allow the simulator's PHP script to work properly.
- http://www.cs.virginia.edu/~cs216/ibcm/
- http://people.virginia.edu/~asb2t/ibcm/
- http://pegasus.cs.virginia.edu/ibcm/
- http://libra.cs.virginia.edu/ibcm/
Command-line version
Two command-line versions were written that will check, compile, and execute IBCM programs. They are available in the github repo, in the "ibcm/" sub-directory. One of them (ibcm-parse.cpp) just parses an IBCM program to ensure it matches the desired format; this is used to, in effect, "compile" a program to ensure the syntax is correct. The second, ibcm-simulate.cpp, is used to actually compile and run IBCM programs. Run the compiled version of ibcm-simulate.cpp with a "-help" flag to see the available options.
Credits
This online IBCM simulator was developed by Nick Williams and Aaron Bloomfield in 2008. IBCM itself was designed by William Wulf. The HTML template for this website was taken from oswd.org.