I started programming Christmas vacation 1968.
This was during my first year at McGill University, studying Physics. My cousin Ken was also at McGill, in engineering. At a Christmas get together, he told me there was a computer that students could use in engineering building.
He offered to show me the ropes, and we met a few days later in the McConnell Engineering Building, 4th floor, I think.
The computer was an IBM mainframe (System 360/50 maybe).
There was a keypunch room with around a dozen keypunches. (These were probably model 029 keypunches). Programs and data would be keyboarded onto 80-column Hollerith cards. A card deck would be assembled with the first card identifying the user. We could use the ID “student”. Some JCL (Job Control Language) cards would separate the code and data and provide instructions on how to compile, execute, and print results .
The card deck would be submitted to a computer operator who ran the card reader, printer, and other equipment. After the job was run, the printed output and card deck would be available for pickup from a wall of cubby holes in the hallway. Turnaround time was variable, but was usually 2-3 hours.
The first language I learned was Fortran IV. The first program I wrote was a solver for a puzzle called Instant Insanity. The puzzle was four cubes with coloured faces. The goal was to arrange the cubes in a line with all the colours the same on the four sides. Brute force, exhaustive search. There was only one solution. I was doing computer gaming way before computer games existed.
I always thought it was interesting that the first program I wrote was in a language intended for doing scientific and engineering calculations… BUT… I used it for a non-computational problem.
The second language I learned was the low-level IBM S/360 assembler (and macro assembler). I would buy IBM programming manuals on different languages/topics and try things out.
One project I worked on was to do symbolic differential calculus. Input was a formula and the output was the differential (d/dx) of that formula. The program knew a bunch or rules for taking derivatives of algebraic equations involving trigonometric and other equations. Written in macro assembler – a box-sized program of maybe 2000 lines of code.
My daily schedule was to get to school early before my first class and go to the keypunch room to type/edit my software and submit the job. At lunch time I could pick up the output, fix a bug or two, and re-submit the card deck. After classes ended, I would spend an hour or two debugging and resubmitting the deck.
Turn around time after hours was faster than during the day. You could get to know the night time operators and the other “computer nerds” (we didn’t use that term) who were also into computers.
I would then return home, have supper, do my homework, then do on-paper programming before bed time. (I remember watching the Tonight Show starring Johnny Carson while doing the coding. The next morning, I would type up the code. Repeat until the program was done.
There were several techniques that that would make using the keypunches easier to use. There was a place to mount a “tab” card to position the cursor to the appropriate columns. Data cards were usually column aligned and even the Fortran code was column aligned.
Columns 1-5 were a line number. (There was a GOTO statement — GOTO a line number. You could also CALL a subroutine by its line number). Column 6 was a continuation line marker. Code was in lines 7-71. Columns 72-80 could be used to number the cards in a card deck.
The card punch had a place where you could feed in a card manually and then type a key to copy the card column by column to a new card. This made editing code (and data) easier.
Story: There were tricks that could be used to do insert and delete operations. To do an insert, you would copy the beginning of the card, then manually hold the input card while typing the insert. Then copy to the end of the card. To do a delete, you could hold the output card while advancing (without copying) the input card.
Computer use at McGill became more common during my time there. There was a second keypunch room, card reader and printer in a building on McGill avenue that I would later haunt. There also were Teletypes installed in different departments for time-sharing. There was a small community of nerds who would use them after hours.
Somehow I got into collecting “digital art” decks. I don’t remember where they came from. I know I did not do the work to create them. I remember using them as decoration in my bedroom in the family cottage.
Story: When I started at McGill, there was no Computer Science department. Computer courses were given in the Engineering department. One semester, I wrote the final exam for their Fortran course. I never took the course or attended any of the classes. Finished the exam in something like 30 minutes, and left exam room. Got an A.
McGill did start a Computer Science department in 1970. It was in Burnside Hall, a new building near the Rutherford Physics building.
Story: During my work career, I used to joke about how long I’d been programming. I would say something like “some day, I’ll work with someone who wasn’t born when I started programming”… That day came in the early 90’s. I told the joke to a younger SW engineer, and he said “I was born in 1969”. Made me feel OLD.