Computer Science as Interpretation

Astronomical wall clock; three train movement; plates and wheels of wood, except contrate; arbors and lantern pinions of steel; going-train with verge escapement and short pendulum; quarters sounded on high bell and hours on lower; upper dial with days of

Computer science is often taught by starting with computer programming. Programming is sometimes referred to as "coding" and a program, similarly, as "code." Whatever you call it, programming or coding, the activity permeates our lives. Just about everything has a microprocessor or microcontroller lurking within it, and these micro-machines execute programs.  At a low-level, the program is "machine code" and at higher levels of human comprehension, the program is written in a language that you may have heard--or know--about such as Python, C, C++, or Java. But what if programming was something more--a way of thinking about the world rather than just a way to solve problems by constructing programs for computers? This represents an attitudinal change about programming and computer science. The above astronomical clock from the British Museum collection is a good example. This 18th century device has the key elements that are necessary to talk about programs. Programs are constructed of the following two key concepts: Memory (state,data) and Control (sequence, branching, iteration,feedback). If you saw the Imitation Game featuring Alan Turing, Turing not only designed physical machines, but he also designed an earlier mathematical machine that we now call the "Turing Machine." A Turing Machine contains just the right amount of Memory and Control required for doing universal computation. However, the key elements of memory and control can be interpreted in our world, and in the British Museum clock. The clock is not universal, but it contains the core abstractions that we prize in computer science. Want to learn computer science as more than a practical skill? Start interpreting.