HAVANA TIMES – Last Sunday, four first year students majoring in computer engineering came to study with me. They had a programming exam on Monday. They’re just beginning their university studies and there are always fears and insecurities. They’re good students, engaged and intelligent; nonetheless, the first programming always seems daunting since it forces you to think in a way that’s different from the way human beings normally process.
Sometimes I draw an analogy with gymnastics, where you have to force your body into positions and movements that are unnatural – the anatomy of a person isn’t designed to stand on your hands, for example, nor to do spins around a fixed bar or perform acrobatics on a narrow balance beam. Likewise, the human brain doesn’t naturally process information and solve problems in the same way that a computer microprocessor does. Given that, the first step in learning to program computers is to adjust your rational thought processes.
As I talked with them, I recalled the days when I first started studying programming. It must have been around 1987, when I was in high school, and my group was chosen to be part of an experiment in computer science education; we were the first. We had good teachers, almost all of them mathematicians who had become computer scientists, and who were practically learning alongside us. Back then, the computer we used was a keyboard with a very basic microprocessor and no storage capacity.
The programs we wrote were stored on a cassette tape using a tape recorder—the kind commonly used to listen to music. The monitor was a domestically produced black-and-white Caribe television set that had no channel selector; it was used solely to display the computer’s video signal. What today seems like the primitive stage of the digital age was, for us, the cutting edge of science.
Later, when I entered college in the 90s, we had some computers – the LTEL 24, also domestically produced. Those machines already had 640 kilobytes of RAM, and data was stored on 5.4-inch floppy disks, whose storage capacity must have been about 540 kb—a marvel to us. Those floppy disks were like the great-great-grandparents of today’s flash drives.
To give you an idea of the difference between that and a flash drive with a storage capacity of 64 gigabytes, the flash drive’s a storage capacity is about 64 million times greater than that of the “great -great- grandparents.” My greatest astonishment came in my third or fourth year, when the XT-8084s arrived in the computer labs —a domestically produced hybrid based on IBM technology with 1 megabyte of RAM. Suffice it to say that any modern phone has at least 4 gigabytes of RAM.
Hardware has evolved tremendously, as the reader will note, but the fundamentals of programming remain the same. The problems and exercises I worked through with the students on Sunday were the same ones I learned from nearly forty years ago. They are the same fundamentals that Alan
Turing and John von Neumann defined in 1946, technologically speaking, which enabled John Prespert and John Mauchly to create the ENIAC (Electronic Numerical Integrator and Computer), the world’s first programmable, general-purpose electronic digital computer). Its architecture persists even in the most up-to-date machines of today, although obviously with vastly superior performance.
The fundamentals of computer programming stem primarily from Aristotelian logic and Boolean algebra. For many, it is a simple science; for others, it’s impossible to learn. The difference has nothing
to do with a person’s intelligence or intellectual abilities. There are very intelligent people who would never be able to solve a simple programming problem. On the other hand, others with, let’s say, average intelligence can become programming geniuses.
One of the myths of programming is that it’s directly tied to mathematics – that’s completely false. While according to mathematicians, math is the basis of all knowledge and all science, mathematics in itself isn’t the science of numbers, but the science of relations; and since everything is made up of relationships, everything is mathematical.
I never passed any of the final exams during the entire four semesters of Calculus that I received in the university. I passed Calculus I and later Calculus IV purely through the goodwill of my teachers, and Calculus II and III as an exception. In contrast, programming was something I always got good grades in but barely had to study.
Read more from the diary of Ernesto Gonzalez Diaz here on Havana Times.
