Our faculty email list has had a recent flurry of activity as we discussed changing the choice of programming language for our CS1/2 intro sequence. When I jumped into the throes, I included my own programming education as I thought it was relevant. Having never taken an introduction to programming course in university, I tend to think (mistakenly) that everyone should learn to program “on their own”. What followed was an eruption of personal histories that provides an interesting snapshot:
The punch-card crowd
First up, we have those that revealed their age with their punch-card toting past. Though amusing, this past is perhaps less relevant to the “what programming language should we use today” discussion:
- “I started with Fortran IV on punch cards. The compiler was the Purdue University Fast Fortran Translator […] ‘PUFFT, The Magic Dragon’.”
- “My first programming experience was in PL/1 on punch cards with eight hour turn-around time.”
- “My first computer course was […] in FORTRAN IV, 24-hour turn-around for my punch-cards (if lucky) on an IBM 360.”
- “My first language was ‘MUSIC’, a language that had been developed at my university for teaching purposes. […] The whole idea of being able to create something on a computer was new and exciting. I used to rush home from class to do my programming assignments. Then I’d head off to the keypunch room, wait in line for a keypunch machine, punch up my deck, turn it in to a guy in a window, and come back the next day to get my output.”
- “You guys had it easy! My punched cards had to be taken to another city by a carrier and the results carried back. It took three days to a week to get the results. I was very disappointed that my program had bugs even after three rounds! […] my first programming experience [was] in Fortran IV, followed by PL-1 and Lisp. My first internship required Basic, and my first job required Cobol and RPG II. They really motivated me to go to grad school. I learned C++ and Java while teaching them.”
- “Fortran IV : 1975 : Burroughs B6700, (punchcards)
Binary : 1976 : Data General Nova, (frontpanel bootstrap loader)
Basic : 1976 : Zilog Z8 microcontroller
Z80 assembly : 1980 : IMSAI 8080
Occam : 1983 : INMOS Transputer! […]”
BASIC and Pascal
It seems that many of us were taught BASIC at home and Pascal early on. Perhaps BASIC should be introduced in elementary school? And revive Pascal? Wikipedia tells me that Pascal is used to develop Skype. Really?
- I learned [BASIC] from my uncle […] We dialed in to the Dartmouth Timesharing System from his living room in Maryland, on a KSR 33 teletype. Later, I learned Fortran in high school and Cobol in college, where I majored in Math, and assembly language for the Xerox Sigma 9. I learned Pascal, C, and Lisp in grad school. […] I figure if I wait long enough, I won’t have to learn Java.
- In my first CS class in college the language we programmed in was Pascal, but we also used a functional notation (mostly on paper!) to study recursion, fixpoint iteration, etc. Since I knew Pascal already from high school, I was kind of bored by those parts, but I was very excited by the functional language and recursion.
- I learned a little BASIC very early, around first grade (so seven or eight), then got introduced to Logo early. I thought the turtle was silly, but loved recursion, lists, and self-modifying code, so spent my childhood trying to write LISP programs in something that wasn’t quite LISP. [I] learned Pascal and Prolog & wrote programs from books, but never had access to a compiler for either. Picked up C++/C freshman year in college.
- My dad taught me Basic when I was in elementary school. I had one high school computer science class that used a teaching-language called Turing. The course was excellent and taught program flow and basic data structures. I learnt Matlab and C for undergraduate research jobs. I took a course on object oriented programming for math majors in my senior year – we used C++. I can say that I absolutely did not understand object oriented programming until 2 years later when I needed it for a grad-school research project.
And then we have what I can only describe as “other”:
- How I learned programming is probably most unusual. I had to learn it for myself. I learned Fortran II first on a Hitachi machine that used parametrons. The program was punched on a paper tape by using a teletypewriter. Therefore, if even one character was wrong, a whole new tape had to be created. Unfortunately, a parametron was slower than a transistor. Therefore, only several machines using parametrons were produced. After learning Fortran II, I programmed mostly in an assembly language for a Toshiba machine which was a clone of GEPAC 4020. Debugging on this machine was done by using its console which displayed the contents of registers with lamps and which allowed memory contents to be changed with toggle switches.