Today, if you want to teach kids the art of counting to one, you’re going to drag out a computer or an iPad. Install Scratch. Break out an Arduino, or something. This is high technology to solve the simple problem of teaching ANDs and ORs, counting to 0x0F, and very basic algorithms.
At the Vintage Computer Festival East this year, System Source, proprietors of a fantastic museum of not-quite-computing equipment brought out a few of their best exhibits. These include mechanical calculators, toys from the 60s, and analog computers that are today more at home in a CS departments’ storage closet than a classroom. It’s fantastic stuff, and shows exactly how much you can learn with some very cleverly designed mechanical hardware.
System Source has a small computer museum in their offices just north of Baltimore, mostly focusing on ‘trainer’ and ‘toy’ computers. These aren’t technically computers, they’re more along the lines of digital logic trainers, designed to teach kids the difference between ANDs and ORs or XORs or NANDs. We’ve seen some of their stuff before including a great visualization of digital logic using EL wire (which was in attendance at VCF). Short of trucking down to the poor man’s Portland, though, this is the best look at the collection we’ve ever seen.
The best example of what System Source brought – that also plays into the headline of this post – is the DigiComp II. This is a recreation of a 1960s toy mechanical computer capable of addition, multiplication, subtraction, division, and counting. This cheap plastic toy was recreated in CNC plywood by Evil Mad Scientists a few years ago, and System Source had it out on display. 11mm pachinko balls flow gracefully through flip-flop registers, eventually landing on a lever connected to a rod that releases the next ball. We recently gave away an EMSL DigiComp II as a prize in the 1 kB Challenge. It’s beautiful, but certainly not the extent of the System Source collection.
Other mechanical computer toys included Dr. Nim, a toy that questions the definition of ‘computer’ as a device that plays a game called Nim, with the goal of the game is to be the last player to remove an object from a heap. By ‘programming’ Dr. Nim with a few letters, the game is unbeatable, so long as the human player always goes first.
With a Digi-Comp II, it’s only fitting that System Source would have a Digi-Comp I, a bizarre mechanical computer toy made out of plastic, wire, and a few dials.
Mechanical toy computers can only do so much, and there were a few more pieces that showed the progression of pre-microcontroller digital logic. Of note was the CES ED-Lab 700, an analog computer produced in the 1980s to teach students the fundamentals of digital logic. Included in this giant box of banana jacks is a clock with two outputs 180° out of phase with each other, flip-flops, AND, NANDs, NORs, and ORs. Also on deck was the Comdyna GP-6, a gigantic metal box designed to teach control systems and analog computing.
Nowadays we take it for granted that our microcontrollers can multiply. We have compilers and all sorts of fancy tricks to make computers do math fast, and if none of those work out we can just put a gigantic look up table in ROM. It wasn’t always like this, and yes, there are still people around who learned on these sorts of tools. It’s great seeing this hardware out in the real world, even if it is only for one weekend a year a the Vintage Computing Festival.
Coefficient Potentiometers, now there’s something that gets the blood stirring.
In 2014, Purdue was still running ECE lab courses based around those Comdyna units pictured. Hopefully they’ve upgraded the labs by now, but those units are still more common in classrooms than one would think.
They were also very helpful in teaching you to break complex circuits up into simpler modules which could be tackled far more easily.
Better check out Purdue salvage!
I once passed the opportunity to buy an old educational analog computer because the banana plugs put me off. Regretted it ever since!
I have one and you were correct- the banana plugs are its weakness. The old banana plug connectors were all sh^t in mine. Not sure if they got wallowed out or what, but had to eventually replace every bc panel. Kinda crazy though because most of the actual computational components were fine. Had two caps to replace and another one that will apparently need to be replaced this winter. Then there is the fact that bc wires are made of diamond gold or some garbage that prohibits the Chinese from figuring out a cost-effective way to make them. I have never found decent bc patch cables online. Most of the time they are the snap tight kind that doesn’t let the wire make good connection with the patch pin itself.
Typical scenario was fire up machine, something not working, jiggle bc cables, works now :D. Cross fingers as it runs routine that things hold lol.
I think I need to ask those Lunetta guys where they get their banana gear from as they don’t seem to suffer the same pitfalls.
“counting to 0x0F” Uhm. That isn’t a number. That is a C pre-processor directive to interpret the 0F part as a base 16 number. It is like saying “counting to [insert your favorite assembler macro here]” Points for using upper case. Lower case and upper case are not the same ASCII and making them equal for numbers is one of the most irritating things about C (the pre-processor again IIRC).
Yeah, and confusingly, there’s only 10 types of people, including those who can type subscripts and those who can’t.
It’s irritating (not just that, but one of the _most_ irritating things) to you that 0x0f means fifteen, instead of being a syntax error? It’s not like there’s some other more useful thing 0x0f could mean, if only it were treated differently from 0x0F.
In other news, C also made 0.5 and 0.5000 equal, even though they’re not the same in ASCII; is this similarly annoying, and if not, what’s the difference?
Of course it should be a syntax error. It makes parsing and converting unnecessarily complicated. I would prefer a mode change with a command like RADIX and add some special cases like HEX and DECIMAL and BINARY. Yes, maybe have to make constants with good names instead of literals (can that be so bad?). And entering arrays of hex values without the fricking 0x in front of each would be so terrible?
Anyway, that ship sailed a long time ago. It is just too bad that the C syntax is so endemic that it is used in texts when referring to hex and binary numbers. (And I’m prejudiced from using languages that are more flexible and in which the lower case can be used from other bases, like radix 60.)
And yes, 0.5 being equal to 0.5000 is irritating, as in any science, including computer science, this means a different number of decimal places in the precision.
Actually, ‘0x0F’ has nothing to do with C. It’s a notation even my calculator understands/displays. It is no more or less valid than ’15’, ‘00001111’, ‘017’, or even ‘120’.
Write a couple compilers, then tell us about it.
I never had one of these sets specifically geared towards computing, but I definitely got my start in the x-in-one style electronics sets. I initially had a 50-in-one magnetic and electronic experiment kit. It had the old spring posts that you bent to shove stripped wires into. Later I got a 200-in-one kit, and I loved that one. It had a dual JK flip flop and a quad two input NAND (Such logic! Much wow!), and combined with the four transistors, you could get away with some VERY simple logic demonstrations, but it was never enough to really TEACH me proper digital logic, which was the kit’s biggest flaw.
It wasn’t till I got to college and started actually playing with jellybean 74xx logic that I realized what I’d been missing all those years of my life. I took to it with gusto, and the first thing I designed was a 15 chip sequencer for generating quadrupedal walking gait patterns for 8 motions plus stop, using 5 command inputs and a 6 step ring counter.
I’ve loved playing with digital logic ever since, and have dabbled in Xilinx CPLDs. Bought a stockpile of XC95xx CPLDs a while back, and will likely never ever run out of them!
+1 for the title.