This course explores the computer hardware / software interface. It provides an introduction to computer organization; gates, truth tables, and logic design; number representation and arithmetic; assembly-language programming and the assembly process; and current techniques for improving computer performance. We will be programming in C, a highly influential language that is itself near the hardware / software interface, and which will provide an introduction to procedural (as opposed to object-oriented) programming for many of you.