Undergraduate and Graduate Education

This course focus on modern computer architecture with a emphasis on
how CPUs work \underneath the hood" and how to build high-performance
memory and storage hierarchy. We will review basic architecture and pipelining,
and then cover modern technologies for extracting as much performance
as possible out of a processor under important constraints. We will also
cover the design of modern memory systems and disk storage system.

Advances in high-end computational technology continue to bring the digital
revolution into academic, industrial and commercial areas. A popular approach
for achieving high performance for these application domains is to use parallel
computers. This course introduces the primary parallel computer architectures,
as
well as the programming techniques applicable to concurrent, parallel and
distributed computations. Students will gain experience in developing parallel
computing solutions for challenging problems.

The main goal of the course, is to introduce students to the fundamental
concepts underlying modern computer organization and architecture. Given
the universality of computing today, it is important for all students
to have a conceptual understanding of the internal workings of computer
systems. The material is of course essential for those who will be involved
in designing computer hardware or developing system software. In addition,
application developers require basic knowledge of computer architecture
in order to program these complex systems effectively.

In addition, students will design and implement a simple pipelined RISC
microprocessor as the final project in this class. The implementation
will be done on FPGAs (Field Programmable Gate Arrays) where the design
can be tested and validated.