Paraphrasing from the Preface of Goodman & Miller, our goal is to gain an
understanding of the kinds of operations that can be executed efficiently
in hardware and how those operations are performed. We will examine the
interface between hardware and software. We will study how numbers, as a
primitive type, are represented and how higher-order data structures (e.g.,
arrays and structures) are represented. We will see how arithmetic and
logic instructions operate on data and take a look at the fundamental
control structures (straight-line, conditional, and repetitive execution)
and more abstract control structures, such as procedures and functions.
We'll see how a CPU communicates with the external world (I/O).
Another objective is to begin to get comfortable with Unix. Much academic
software is written for Unix (including the simulators we'll be using) and
it provides an opportunity for you to meet an operating system ``up close
and personal'' sans its GUI layer.