Teaching
Computer Organization and Design

This course is an intensive introduction to the fundamentals of computer architecture, in which we discuss the basic design, or architecture, of computing hardware. Computer systems involve architecture design at many levels. We focus on the instruction set architecture (ISA) level (the interface between the software and computing hardware) and the microarchitecture level (the computing hardware itself). We will examine to some extent, the level above the instruction set (the programming language level) and the level below the microarchitecture (the logic gate level) in order to deepen the understanding of computing systems. This course has a demanding design component and requires students to implement some of the basic concepts presented in lecture using real hardware design tools.

(Image credit: Vyrian.com)
Computer Architecture

ECE511: Computer Architecture is a course for graduate students and senior undergraduate students, in which we discuss advanced computer architecture techniques. The course will cover a variety of latest research topics centered around the computer architecture, including instruction set architecture, multi-core processors, parallel programming models and architecture, heterogeneous computing systems, processor security, hardware accelerators and virtualization, cache architecture, memory subsystem, memory consistency and persistency models, near-data processing, disaggregated computing architecture, and unconventional computer architecture like brain-computer interface. Through this course, students will learn not only the fundamental concepts of computer architecture via the lecture materials, but also the hands-on experience of designing and evaluating architecture techniques via MPs and a course project.

Emerging Memory and Storage Systems

ECE522: Emerging Memory and Storage Systems is a course developed based on ECE598: Advanced Memory and Storage Systems for graduate students and senior undergraduate students. In this course, we discuss memory and storage systems in a systematic manner. It covers the new and emerging hardware architecture, systems software, memory-centric applications, near-data computing, rack-scale storage, storage security and reliability, mobile/wearable/IoT storage, and storage at rack scale. Through this course, students will work on three programming assignments for understanding the fundamental concepts, and one course project for developing a memory/storage system.

Image credit: Rambus