I wrote my first program on a Wang "desktop". You hand-punched cards with binary data, put the card into a clamshell-like reader, which read the card. It was quite a learning experience.<p>Later at school I worked on a remote IBM machine through a dial-up and teletype connection. I got a job running the "computer room" (teletypes and then selectrics) for the 4 years I was there.<p>Learning involved random encounters with information. I got a copy of the hardware maintenance manuals for the IBM 360. Someone from Rutgers told me about state machines and turing machines. I learned Basic, the Fortran, the Lisp 1.5 (I've been a lisper ever since).<p>My undergrad major was math so I learned numerical integration (e.g. the method of false position). There was no "computer science" degree or department. It was taught by math professors who were one chapter ahead of the class. I wrote (ghost) some of the final exams for some of the classes.<p>Graduate school was computer science from the engineering department where we learned analog computers, Karnaugh maps, and clocked/unclocked circuits. I did "machine vision" work with images from bozes of punched cards (we didn't have a camera).<p>The field was not nearly as complex then. You could "learn it all".<p>Now I get to play with (the IBM) quantum computer, do machine learning, and use program proof techniques, each of which involved a LOT of youtube videos. It is hard to keep up but still great fun.