The school I attended in the 1970s boasted in its prospectus that it had "several computers". One of these turned out to be a programmable calculator. The remaining two had been constructed by a maths master. One was analogue and the other was built using discrete transistor logic circuits driving an array of light bulbs. It had 16 eight-bit bytes (no, not kilobytes) of memory. To program it, you had to use a row of toggle switches.
As an introduction to higher-level programming, a session was arranged on the new mainframe at a nearby college. Unfortunately, it had to be cancelled because they had been unable to get the compiler installed. Eager for details of this setback, it was explained that the compiler would probably be about the size of a refrigerator. Perhaps it was too wide for the doorway. The image of a compiler being manifest as a piece of hardware remained with me for some time.
As integrated circuits became less expensive I began to build my own computers, initially analogue, using cheap op-amps, and then digital. The National Semiconductor SC/MP microprocessor was intended for low-end controller applications even then, but its simplicity made it ideal for home projects. It had a very limited instruction set which could be hand-coded from memory without needing to use an assembler.
Naturally, instructions were entered using a bank of switches. Eventually only a small bootstrap program needed to be entered in this way, the rest of the 256 bytes of memory being loaded from a tape recorder. Debugging was achieved by single stepping the actual processor clock.
Going to university offered the prospect of at last being able to program a "real" computer. During an interview at one university I was proudly shown the first-year computing class. Each student had a manual card punch, where you dialled each character like a Dyno label making machine - no thanks!
Later that year I began computing classes where we were let loose on the department's DEC PDP 8 minicomputers. The machines were programmed in Basic and offline storage was by means of the paper tape punch and reader attached to the teleprinter. This was great! If you were lucky, the ferrite core memory would be intact when you started the machine up, otherwise you had to enter the bootstrap program by hand. This was by means of a row of toggle switches. Although tedious, it didn't take as long to boot up as my current PC!