They had an emulator with a button that would simulate 1 clock cycle of a computer. You could write your binary/hex/assembly and load the program and step it through each cycle manually and watch where the computer stored, calculated, and processed the code.
You could see why floating point numbers had built in inaccuracies and it was fun to watch a divide by zero operation slowly destroy a computer and cause it to crash.
The other class was the Java one. That was obviously higher level code, but it was a bit too high level for me, it may as well have been basic. I would have preferred C++ (C# was kind of new back then).