Computer hardware organization and capabilities. Machine and assembly language programming. Surveys typical computer architectures, including RISCs. CPU implementation at the register-transfer level. Hardwired control and microprogramming. Bus structures and interfacing of IO and memory devices. Weekly laboratory sessions will deal with both machine and assembly language programming, and with interfacing various devices to a microprocessor trainer. Prerequisite: CS221.