This course introduces the design of a generic central processing unit (CPU), focusing on its role as the core of computer systems. Topics include arithmetic logic unit design, control unit design, registers, address, data, and control buses, with reference to standard implementations. Single and multi-core processors. Machine and assembly languages of a standard microprocessor are used to illustrate the design and its interface with upper layers such as operating systems, control drivers, and compilers. Several laboratory experiments will be based on microcontrollers. Pre-requisite.: COMP 226.