'Retro Programming' Teaches Using 1980s Machines 426
Death Metal Maniac writes "A few lucky British students are taking a computing class at the National Museum of Computing (TNMOC) at Bletchley Park using 30-year-old or older machines. From the article: '"The computing A-level is about how computers work and if you ask anyone how it works they will not be able to tell you," said Doug Abrams, an ICT teacher from Ousedale School in Newport Pagnell, who was one of the first to use the machines in lessons. For Mr Abrams the old machines have two cardinal virtues; their sluggishness and the direct connection they have with the user. "Modern computers go too fast," said Mr Abrams. "You can see the instructions happening for real with these machines. They need to have that understanding for the A-level."'"
Re:History doesn't repeat itself (Score:5, Informative)
Actaually the BBC PC isn't far from the perfect embedded system trainer.
From the Wilkipedia.
"The machine included a number of extra I/O interfaces: serial and parallel printer ports; an 8-bit general purpose digital I/O port; a port offering four analogue inputs, a light pen input, and switch inputs; and an expansion connector (the "1 MHz bus") that enabled other hardware to be connected. Extra ROMs could be fitted (four on the PCB or sixteen with expansion hardware) and accessed via paged memory. An Econet network interface and a disk drive interface were available as options. All motherboards had space for the electronic components, but Econet was rarely fitted. Additionally, an Acorn proprietary interface called the "Tube" allowed a second processor to be added. Three models of second processor were offered by Acorn, based on the 6502, Z80 and 32016 CPUs. The Tube was later used in third-party add-ons, including a Zilog Z80 board and hard disk drive from Torch that allowed the BBC machine to run CP/M programs."
Four A2Ds 8 bits of GIO, and switch inputs. All available from Basic on a machine with a Floppy, Keyboard, and Monitor. Sweet.
I so wanted one of these back in the day. Too expensive and not really available in the US at the time.
Re:Sounds like fun (Score:3, Informative)
Beebs are good machines (Score:2, Informative)
I was using them at college when they were new.
My first job was writing software that controlled scientific instruments and their was an awful lot of eductaional software written for them because they were designed to be used in schools. The Basic was more structuured and it could use microcassettes or 5 1/4 flopies with its own DOS.
In short, if you are going to use a dinosaur, it is the best dinosaur to choose
Re:Probably a good idea (Score:5, Informative)
Re:Sounds like fun (Score:4, Informative)
The model-T was even stranger: http://en.wikipedia.org/wiki/Model_T [wikipedia.org]
Re:Does that make sense ? (Score:4, Informative)
They're A-level students, i.e. the final two years of school, ages 16-17 and 17-18. It's probably more interesting than making some crappy VB application, which is what I remember the A-level computing students doing (I didn't do the subject, I did extra maths instead -- it was much more useful for finding a place on a good CS course at university).
Re:Au contraire (Score:4, Informative)
Conceptual Model (Score:3, Informative)
Another factor is the conceptual model is simpler. It is possible to know the entire layout of one of these classic machines. The CPU, instruction set, registers, I/O chips and memory layout. You can exactly where a program will load in memory. A 6502 has an Accumulator, X register, Y register, 6 flags, a stack pointer and a program counter. It is possible to know exactly how the computer works on both a hardware and software level.
Try that with a PC, what happens when you flip the power switch. Well which BIOS, what POST tests, what hardware? What happens up to the point where the boot sector is loaded? What happens after control has been turned over to the boot loader? What about the hardware? There are so many combinations, so many drivers, etc. How do you even go about teaching these things when you can't be sure of what hardware you will have in the classroom?
The classic machines flatten this out. Even in emulation they are very helpful tools for teaching.
Re:Does that make sense ? (Score:3, Informative)
The .NET File.Move() (and FileInfo.MoveTo()) calls the Win32 MoveFile(), but you really need MoveFileEx().
Requirement: update a file in such a way that all other processes see the update as atomic, even if you crash at an arbitrary point. (Not an uncommon problem in systems programming.)
Solution: make the change to a copy of the file in a temp area, then "rename over" the known file to get the atomicity you need.
This approach to making file updates atomic is a fundamental property of a filesystem, but unavailable through the obvious .NET classes (they throw if the destination exists).
Re:IMO: Great (Score:3, Informative)
(why should you rewrite a framework everytime you start a new application)
Lots of frameworks are corsets. Looks nice, but only hinders when you want to get the job done.
Any way this could be done everywhere? (Score:3, Informative)
I'm reminded of something that happened to me while I was a student assistant at a remote job entry location of a university's computer facilities.
The incoming batch of engineering freshmen were being taught, as was the tradition, to program badly in FORTRAN. An instructor assigned them the problem of counting the ways to make change for a dollar, assuming you had plenty of all the denominations of coins. How did he have them do it? Nested DO loops, one per denomination, with each denomination running from 0 to 100 / the denomination's value, of course!
The result? Bunches of students exceeding the thirty-second time limit for WATFIV jobs so their programs were cancelled before they finished. They'd run them again, of course--maybe the first time was a fluke. (The university ran on a 370/138 at the time....) Then they'd come in and ask how to run in a different job class so they weren't limited to thirty seconds.
I wrote a program in Algol W with a recursive function that would solve the general change making problem. It solved the specific one in 0.01 seconds. A friend and coworker (alas, no longer with us) wrote a non-recursive program in FORTRAN that took less than 0.01 seconds, so that the output showed it as running in 0.00 seconds. Our boss took the listings and output and had a discussion with the instructor. He, and I hope his students, learned something.
Nowadays, they wouldn't. Today's computers would run the horribly inefficient version so quickly that nobody would care, and they'd move on to the next thing.
So I applaud this approach, and hope everyone gets that experience.