The first machine I ever programmed was a venerable TRS-80, Model I, Level 2. I used to hang around the local Radio Shack and copy pieces of the manuals into a notebook (mostly just the syntax for BASIC language). I would then write programs on loose-leaf paper and debug them in my head. Short examples I would try out at the store. Longer examples had to wait till my neighbor and friend Mike Weissel got the computer on his birthday. Then I worked out a long database program on paper and tried typing it in. It may have even worked ;-). The machine only had 16K of memory and used cassette tapes for storage, but it was the coolest thing I had ever seen.
I became very interested in every aspect of computers then, and borrowed from the local library most of the issues of Byte magazine. Byte back then had serious articles on programming and hardware, as opposed to now where it has serious articles on the business of computers. Mike got a subscription to Softside magazine and I remember devouring all the copies. Since there were several different computers and many dialects of BASIC, I had to learn a lot about the differences to try to implement the programs in the magazines written for different computers.
Eventually I was able to convince my father that we absolutely positively needed a computer. But which one. At the time, the TRS-80, Apple II, Commodore Pet and Atari 400/800 were the only machines I really knew about from reading magazines, and so I began studying up on all their aspects. I convinced myself that the Atari was the best of the lot, and began my long campaign to get one. Eventually, my father broke down under the onslaught and got me and my brother an Atari 800 for Christmas 1982.
I spent a lot of time typing programs in from magazines. ANALOG computing and ANTIC were Atari specific magazines I soon picked up regularly, as well as Compute!, whose major selling point was it had the most programs every month (although you had to translate yourself sometimes).
At some point I became pretty intimate with the machine. Bill Wilkinson’s “Mapping the Atari” became something of a bible, and I soon was hand coding short machine language subroutines to hook into my BASIC programs via USR calls. I bought Atari’s ASM/ED cartridge and wrote some fully machine language programs (eventually I switched to Mac-65, a much better assembler). I started a number of projects, of which the following come to mind:
Eventually I left high school and went to college. I packed an Atari 130XE to bring with me (a gift from my parent’s) but soon discovered they had much cooler computers at Caltech. So after about a year I stopped using the Atari more or less and started using Vaxes and HPs and Macintoshes.
Although I did take a programming course in junior high school, I didn’t learn much then, so college was my first introduction to formal coding methods, i.e. real classes in computer science. These courses forced me to consider programming the computer as a scientific problem rather than as a hack. Algorithmic complexity was a hazy notion before college, but now I started to appeciate the difference between a quicksort and a bubble sort.
I wasn’t wedded to the computer strongly enough to major in computer science, but I wanted strongly to learn about the machine and its capabilities, so I majored in Applied Mathematics. Actually, I had a long standing love affair with pure mathematics but I didn’t think I could handle the advanced courses, so I declared in Applied Mathematics which mostly overlapped with Mathematics. This also allowed me to complete a second major in physics, since one year long applied math course applied to both majors (AMa 95). Applied Mathematics really didn’t differ that much from pure math, but I was able to convince the department chairman to let me substitute a few CS courses for some required math courses which I felt were beyond me (Real Analysis in particular I was trying to avoid). So I was able to take a year long course in information theory and the theory of computing and have it apply toward my major. It was great coup actually, since it was exactly what I wanted to do.
I learned Pascal in my courses and programmed everything in it till my senior year when I switched over to C. A few days in the week I would spend most of the early evening in the lab, except towards the end of the semester when I would usually code eight hours or more straight to finish up. My last semester I also took a course in Fortran to round out my knowledge of scientific programming languages. Unfortunately, that was not my last encounter with the language.
My senior year I worked at JPL part time writing a simulation of an automobile sensor management system. I learned that there is indeed a difference between a 500 and a 5000 line program, and that the complexity is not a linear function of the number of lines. In fact, I suspect it is probably exponential in the square root of the number of lines, like the number of partitions of an integer.
Graduate school required me to hone my skills more sharply. My fortran skills improved since I occasionally had to use it, my C skills remained pretty good, but my knowledge of Pascal and other languages suffered from disuse. I became very Unix-centric, and picked up bits of awk, sed and perl and shell programming as needed. I learned more about specialized numerical methods (Monte Carlo, anyone) and took on a problem which had the required degree of computational effort. I became extremely proficient at Mathematica.
Last modified: July 5th, 1996
Kevin Chase