|Lecture hours per week|
|Lab hours per week|
This course focuses on the essentials of computer architecture as required for students in programming and computer engineering. It covers all aspects from the low level building blocks such as CPU and RAM to the system-level architectures, and succinctly explains the interface between hardware and software, without going to chip-specific technical details. Each of the major components will be described and their role in the overall system will be examined. Sections on virtual memory, caching, microcode, and device driver software provide critical insight into how programmers and embedded system developers can design efficient, elegant, and reliable software.