This course is an introduction to the building blocks and organization of contemporary computers. Topics include: registers, memories and other logic building blocks; central processing unit pipelines; integer and floating point computer arithmetic; memory and cache design; paging and mass-storage systems; interrupt strategies; system bus protocols and shared-memory multiprocessors; contemporary input/output buses and techniques; and the interactions between hardware and the operating system.