This course introduces students to the basic concepts of computers, their design and how they work. It encompasses the definition of the machine’s instruction set architecture, its use in creating a program, and its implementation in hardware. The course addresses the bridge between gate logic and executable software, and includes programming both in assembly language (representing software) and HDL (representing hardware). It will cover modern computer principles using a typical processor and emphasize system-level issues, understanding process performance, and the use of abstraction as atool to manage complexity. It will then explain how efficient memory systems are designed to work closely with the processor. Next, it will introduce input/output (I/O) systems which bring the processor and memory together with a wide range of devices. Finally, we introduce systems with many processors