This course covers the organization of modern computer systems. In addition to learning how to program computers at the assembly level, students learn how to design the main components of a Von Neumann computer system, including the design of various operational units, memory system, input/output interfaces, pipelining and parallel processing.