This course is an introduction to computer architecture and organization via the programmer's perspective. It treats the computer architecture (a set of design decisions about the CPU organization and structure) as an API.
The theme of this course is "The ABI as an API": the Application Binary Interface exports a particular set of promises and contracts to assemblers, compilers, programmers, systems developers, and OS kernel authors. Because of these promises (i.e., the functionality that a CPU wants to export to user and system programs), the architecture is then forced into certain design decisions. As an example, an instruction's width and the number of bits it dedicates to an opcode has implications for the actual structure of the computer organization itself as well as a concommitant influence on the type and number of instructions that are available to user programs.
Students should emerge from this course with:
The course calendar description says: "An introduction to computing machinery establishing the connection between programs expressed in a compiled language, an assembly language, and machine code, and how such code is executed. Includes the detailed study of a modern CPU architecture, its assembly language and internal data representation, and the relationship between high-level program constructs and machine operations."