Course description: EE282 focuses on advanced system-level architecture techniques for devices such as personal computers, servers, and embedded or portable systems. It covers topics such as cache hierarchies, memory systems, storage and IO systems, virtualization, clusters, fault-tolerance, and low-power design. It also covers the interactions between the hardware and software layers in such systems. The programming assignments provide an introduction to performance analysis and optimization techniques for computer systems. At the completion of the course, you will understand basic principles such as locality, coarse-grain parallelism, overlapping communication and computation, performance/power trade-offs, and reliability. Overall, you will understand how computer systems are organized and, more importantly, why they are organized that way. EE282 discusses the characteristics of modern processors that affect system architecture, but does not provide detailed coverage of their internal microarchitecture (see EE382A).
EE282 is appropriate for graduate and advanced undergraduate students specializing in the broad field of computer systems. It is also appropriate for other EE and CS students who want to understand, program, and make efficient use of modern computer systems in their day-to-day work. EE108b or an equivalent class is a prerequisite. Students are expected to have programming experience with C, C++, or other similar languages.
Lecture Time & Location: Monday & Wednesday, 11:00am-12:15pm, Gates B01.
Review Section Time & Location: Friday, 11:00am-11:50am, Gates B03
Online access: Lectures available online through SCPD (info, videos).