Introduction to computer systems: General overview of computer abstraction and technology. Instruction set architecture: instruction type, format, operand, addressing mode. Computer arithmetic: addition, subtraction, multiplication and division. Floating point representation. Basics of microprocessor: pipeline, datapath and control. Data and control hazards. Parallelism: Instruction Level Parallelism (ILP). Memory hierarchy: Exploiting locality using cache memory, virtual memory. I/O and storage: performance of disk and file systems.