return to main page

Programming / Data Processing Classes


-----Original Message-----
From: Robert Garner [mailto:robgarn@mac.com] 
Sent: Monday, December 17, 2007 11:32 PM
To: Len Shustek; Timothy Dirks
Cc: David Cortesi; Frank King; Mike Cheponis; Allen Palmer; 
Bill Worthington; Dan McInnis; Ron Mak; 
randall.neff@gmail.com; Kirsten Tashev; Alex Bochannek; Grant 
Saviers; Ed Thelen; Robert Garner; Dag Spicer; Robert B 
Garner; David Pease; Jim Somers; 1401_software@computerhistory.org
Subject: Ron Mak's 1401 programming class proposal

Len, Tim,

In our conversations you've mentioned an interest in a 
Museum-sponsored
class for programming and instruction on the IBM 1401.

Woz was excited about that same possibility when he visited the 1401  
a year ago;
i.e., a "bare bones" offering of the entire spectrum from "from  
transistors to system programming!"

Here is a write-up Ron Mak did a couple years ago proposing such a  
class, still vital now:

Table of Contents:


Ron's Initial Proposal

1401 Software Group

Ronald Mak
November 5, 2004

This informal write–up describes some ideas for what the 1401 Software Group can do in conjunction with the 1401 Restoration Project at the Computer History Museum.

The Software Group will have two overarching goals:

  1. Provide demo programs that will make the 1401 system perform for museum visitors.
  2. Conduct classes about the 1401 that can include historically accurate, hands–on programming sessions with the system.

Demo programs

There are many kinds of demo programs, and they can target different audiences.

The 1401 system is over 40 years old. Most of the museum visitors have never seen one, let alone one in operation. Since they grew up with PCs and workstations, many (if not most) visitors have never experienced a punch-card-based computer in action.

Therefore, even a "mundane" demo would be impressive, one that shows reading in a program deck, flashing lights on the console, tapes reading and writing, and the line printer printing. If we let small groups of visitors into the machine room (under strict do–not–touch rules), they will also sense and hear what it was like to work with computer equipment back then. For this kind of demo, we can have the 1401 system running a typical application, such as generating a payroll or a sales report.

We won’t ignore some of the fun things people did with the 1401. The program that plays 1403 printer music comes to mind. However, the 1401 was primarily a business system and wasn’t the "hacker’s computer" like the PDP–1 that college students had access to back then. Therefore, we shouldn’t go overboard with these kinds of demos.

During a brainstorming meeting at the museum on October 29 with Dag Spicer, Kirsten Tashev, and Ron Mak, Dag suggested having an "interactive" demo, such as a simple biorhythm program. A visitor would punch some personal information (or a trained docent would do the punching) onto a card, and the program would read in the card and print out a biorhythm chart. The visitor would be able to take home the punched card and the printout.

Where will we get demo programs? We will use existing programs that we can find, such as a business application or a utility program like tape sort–merge. We’ll need to learn how to run them and supply them with appropriate data. We’ll have to write other demo programs ourselves or have students from our classes write them.

Classes

With a working 1401 system, we’ll be able to conduct short but engaging classes about the computer. For example, we can have a 90–minute class that covers:

  1. Some historical facts about the system, such as why it was an important computer in its day.
  2. An overview of the machine architecture.
  3. How to program the computer, including a dozen or so Autocoder assembly instructions.
  4. A simple programming problem.
  5. A talk by an "old timer" about personal experiences working with the 1401.
  6. Watching a demo in the machine room.

A longer class could add another 90 minutes during which the students can keypunch a short program (either one given in the class or ones they write on their own), feed the cards into the 1402, have the 1401 run the program, and watch their output print on the 1403. (All of this would be under strict supervision by trained volunteer operators.) This would provide a fantastic experience for today’s PC and workstation crowd.

If we run classes on Saturday, we could do the short 90–minute class before lunch and the longer 3–hour class after lunch. We may want to set a minimum age for the students, say high school level or older.

These classes will undoubtedly inspire some advanced students to study the machine in greater depth on their own, and they will want to write programs that are more complex. We certainly want to encourage that, and we’ll point those students to the online 1401 documentation and simulators.

Dag suggested that we consider a batch computing service. Advanced students can arrange time to come into the museum to keypunch their program decks. They’ll leave their programs for the trained volunteer operators to run, perhaps on a weekly or semiweekly basis. Students will undoubtedly learn about desk checking their jobs before submitting them.

We should foster ties with the computer science departments of our local universities. Computer architecture classes can benefit from having a "live dinosaur" from which students can learn what the old masters had accomplished. The 1401 had several unique architectural features. The antique programming techniques to deal with a very limited amount of memory are useful today for programming embedded microprocessors.

Example programming problem

Here’s a simple problem that takes advantage of the 1401’s variable–length words. Compute and print the Mersenne prime number 211,213 – 1, which was the largest known prime number when mathematicians discovered it in 1963. Hint: The number has 3,376 digits.

First solution: Allocate and zero out a 3,376–character word, and add 1 to it. Repeatedly double the word’s value 11,213 times, subtract 1, and print the value.

This solution will work, but it is somewhat slow, since the computer spends much of its time needlessly doubling leading zeros.

Second solution: Allocate and zero out a 3,376–character word, and add 1 to it. Now set the wordmark at the rightmost character of the word (where the initial 1 is), thereby making the word as short as possible. Repeatedly double the word’s value, but each time first check the character where the wordmark is located. If that character is nonzero (or, more precisely, 5 or greater), move the wordmark one character to the left –– i.e., grow the length of the word by one character whenever necessary. After 11,213 doublings, subtract 1 and print the value.

This solution will run about twice as fast as the first solution. By watching the console lights, you can see the doublings taking longer and longer as the length of the word increases.

Students can learn how to read the instruction timing charts and see who can come up with the fastest program. Or, they can try to write the shortest program. Can you solve this problem on a 1401 system that has only 4K of memory?

Resources

The Software Group will work closely with the museum staff. Kirsten noted that the museum is currently formulating its education plans. The staff needs to investigate what impact such classes will have on museum resources and whether they would be feasible. Perhaps the 1401 classes can be the prototypes.

Members of the 1401 Hardware Group have also cautioned that the restored system may not be production quality, so we’ll need their guidance regarding how much stress we can put on the hardware.

The availability of supplies may be limited, such as blank punched cards, wide fan–folded printout paper, printer ribbons and carriage control tapes, magnetic tapes, etc. How many working keypunch machines does the museum have?


Ron's update

From Ron Mak, Jan 2, 2008

My earliest ideas about the 1401 class were centered around programming. But I later decided that it should be a more general "Computing in the 1960s" class that discusses what it was like to work in data processing during that era. The class would include discussions and demos of unit record handling, how programmers and users worked with the "primitive" equipment, what apps they ran, etc. There would be a hands-on lab where we would give the students a simple program to keypunch -- each student would punch one or two cards of the program -- and they would run it on the 1401 itself and debug keypunching errors. I envision a two-hour class: one hour in the classroom with multimedia, and a one hour lab with the keypunches and the 1401. The class would be designed to give students a taste of what it was like in The Old Days beyond simply looking at artifacts.

I don't think a 1401 programming class would succeed with the general public, but we can certainly do it in conjunction with a local university class on the history of computing. Then it would make a lot of sense to get the students to write a program as a class project and experience working with 16K or less of memory. PC simulators and ROPE would be very useful along with pointers to online Autocoder documentation. A bonus would be an opportunity to keypunch and run a program on the actual hardware. (Remember: 6 seconds PC time = 2 days 1401 time!) I believe that today's students can learn a lot from how things were done back then.

-- Ron

"> Jan 2008


Ed Thelen's two cents, responding to Ron Jan 2008


----- Original Message ----- 
From: "Ronald Mak" 
To: Robert Garner,  ...
Sent: Wednesday, January 02, 2008 11:31 PM
Subject: RE: Ron Mak's 1401 programming class proposal


And two more cents    ;-))

...
> My earliest ideas about the 1401 class were centered around programming.
> But I later decided that it should be a more general "Computing in the
> 1960s" class that discusses what it was like to work in data processing
> during that era.

I suggest rewording the title to
      "Data Processing in the '50s and '60s,
          Computers De-Mystified"

which includes the Unit Record equipment "we" have
 plus the 1401 system.

>   The class would include discussions and demos of unit
> record handling, how programmers and users worked with the "primitive"
> equipment, what apps they ran, etc.  There would be a hands-on lab where we
> would give the students a simple program to keypunch -- each student would
> punch one or two cards of the program -- and they would run it on the 1401
> itself and debug keypunching errors. 

I think we should start with Unit Record equipment,
    where the data flow and operations are very visible,
       not hidden away in some cores or transistors.

Imagine seeing the data, and the data flow -
    It isn't just some stressed electrons chasing about in a metal box.

Data Flow, the "program" is:

a) Key punch in the kilowatt hours used, and the customer number.
         Look, the holes have meaning, you can "read" them
b) Then sort by customer number
c) Merge (collate) those cards with sorted cards containing 
       customer billing rate and address
d) Feed these into a machine that prints the customer name and address
     multiplies the billing rate by usage giving the dollar billing
    which makes the customer readable bill  :-))
      (A 403 or basic 1401 is such a machine.)

The above "de-mystifies" programming and computers -
     you can see and understand what is going on  :-))
Except for the current ability to do random access data processing,
  the above is what happens today for your (telephone, electric, ...) bill.


>  I envision a two-hour class: one hour
> in the classroom with multimedia, and a one hour lab with the keypunches and
> the 1401.  The class would be designed to give students a taste of what it
> was like in The Old Days beyond simply looking at artifacts.

I bet the folks would like to run a sorter,
  watching cards whiz by at 1000 per minute is memorable  :-))

And a sorter visibly helps get things in order for easier access :-))


> I don't think a 1401 programming class would succeed with the general
> public, 

Of course not - most folks have their attention focused elsewhere -

> but we can certainly do it in conjunction with a local university
> class on the history of computing.  Then it would make a lot of sense to get
> the students to write a program as a class project and experience working
> with 16K or less of memory.  PC simulators and ROPE would be very useful
> along with pointers to online Autocoder documentation.  A bonus would be an
> opportunity to keypunch and run a program on the actual hardware.
> (Remember: 6 seconds PC time = 2 days 1401 time!)  I believe that today's
> students can learn a lot from how things were done back then.

At the risk of heresy, remembering my college daze,
   I think college students are very unlikely candidates
   for our offering(s)
  a) They must be focused on the present to succeed in their studies
         and mid-terms
  b) A lot of hormonal attention is spent on 
        Miss Smiling Curves or Mr. Hulk Studly
  c) Any time left over is usually spent on making a buck
        to stay in school or get some wheels.

As an example, with three years trying, no college student
 has stayed to help or learn on the 1401.  
  The possible exception, Mathias, is currently at Berkeley.
We did attract some "older" non-computer folks.

I propose that our Happy Hunting Ground is older folks,
    a) Their previous focus, kids, have left
    b) They are looking for a hobby other then
          ElderHostel and volunteer driving at Kaiser.
    c) They already have food, housing, and wheels

And to show that we / they mean business,
  I think we should charge a nominal amount for
     CHM facilities and supplies.
Most folks figure free is cheeeep or a come-on.

I bet we could do it !!
   a) "Younger" volunteers and staff would be attracted.
   b) Visitors, viewing our interesting handout, would be attracted,
        and possibly get attracted into volunteering at CHM.
   c) Current docents (and many others ;-) would love to teach,
        and get a break from herding.

Such a series of classes would help round out the CHM offering to the community  :-))

Ed Thelen

P.S.  I feel sorry for present day kids. Computers are now gigahertz,
      push down stacks, tail recursion, concurrent threads, C++ 
      and so many other mystical, almost irrelevant things - 
      Data Processing is now Magic.

> -- Ron


Frank King offers to get the 2000 card/min 084 going - Jan 2008



At 04:50 PM 1/3/2008 -0800, Van Snyder wrote:

On Thu, 2008-01-03 at 16:41 -0800, Ed Thelen wrote:
>> I bet the folks would like to run a sorter,
>>   watching cards whiz by at 1000 per minute is memorable  :-))

> If only we had a model 84 ... watching cards whiz by at 2000 per minute
> is memorable.  Watching them be accordion-folded at that speed is even
> more memorable.


The Computer History Museum has an 084 sorter.
         I would be more than happy to make it run for demos. 

Frank King