SaM is the codename for a Java-based computer emulator. It is an acronym for StAck Machine. SaM is a virtual machine which executes programs composed of SaM assembly instructions. It is a tool, which allows students to learn how computers operate, and to write a compiler/translator to the simplified SaM assembly, testing their code using the virtual machine.