This module is intended for students who wish to understand the relationship between computer software and hardware. The course is centred on the study of a real world microprocessor (MIPS32). Students will learn how to program in assembly language. The relationship between a processor's instruction set architecture and its performance is explained. Various processor designs are described including single-cycle, multi-cycle, pipelined and parallel. Design aspects of recent high-performance processor architectures are discussed.