This course studies the hardware components of computer systems, including design considerations, implementation, interrelationships, and performance. Combinational and sequential logic and their use in the components of CPUs, buses, and interfaces are covered. Instruction sets and an introduction to assembly-language programming are included. Details include input/output, memory hierarchies, pipelining, ALU operations, and CPU control. Processors include both CISC and RISC, as well as multiprocessor systems. Prerequisite: CS 225 or department permission