Computers and systems are ubiquitous. Processors are encountered at every computational scale ranging from embedded microprocessors in smart phones and speakers, through desktop, laptop, and tablet computers with extensive memory and I/O, to supercomputers composed of arrays of processors. This core course provides a foundation for understanding computer architecture and the interplay between the central processor, memory and input/output. The course will cover a range of analysis and design techniques and include a survey of representative modern architectures. One will be selected to provide the basis for further inquiry and to provide a platform for project-based learning.