This course aims to introduce students to the principles behind the organization of a computing system. It identifies the primitive building blocks from which computers are built and describes how information is represented physically. It describes the techniques used to control the complexity of building increasingly sophisticated components from simpler ones. It makes explicit the relationship between instruction execution and changes in hardware state.