This document provides an introduction to computer programming, covering topics such as hardware/software interfaces, computer languages, compilation, and interpretation. It describes the layered structure of a computer system from the machine level through operating systems and applications. Programming languages are discussed from machine language through assembly and high-level languages. The roles of compilers, linkers, and interpreters in translating between languages are summarized. Common programming errors like syntax, runtime, and logical errors are also briefly outlined.