A few Lego bricks might have been all Babbage needed to realise his dream of building the first working digital computer.
LEGO enthusiast Andrew Carol has built three versions of Charles Babbage's Difference Engine, the computational machine originally designed by Babbage in the mid C19th century but not built during his lifetime. A working model was built by the London Science Museum in 1991 and now there's another replica - in LEGO Carol's models is not just a gimmick - it works!
Babbage's design could evaluate 7th order polynomials to 31 digits of accuracy. Carol set out to build a working Difference Engine using only standard LEGO parts which could compute 2nd or 3rd order polynomials to 3 or 4 digits.
His first attempt fell short of the goal - it calculated 2nd order differences to 3 digits but issues with the performance of the 'carry' operation prevented easy expansion to more orders of difference or the addition of more digits. It also included a "modified" LEGO part in each adder unit. The second model overcame those limitations being capable of 3rd order differences and 4 digits accuracy and, other than the paper printed digit labels used to output the answer, using only standard LEGO pieces without modification.
The latest 3rd generation machine operates five times faster than the 2nd generation.This machine can evaluate polynomials of the form Ax^2 + Bx + C for x=0, 1, 2, ...n with 3 digit results.A new answer is produced every 20 turns of the crank: 10 turns of the crank adds the bottom two digit register into the middle two digit register. The next 10 turns of the crank adds the middle two digit register into the top three digit accumulator, yielding the next result.
See it in action here:
Andrew Carol's intention is that other enthusiasts will build similar models and he has plenty of information of how it works at
Computer Science Education Week starts next Monday. If students want to do rather more than an hour of code, Google has partnered with Codecademy to encourage teachers in US Public Schools to adopt a [ ... ]