This course provides an introduction to computer organization and design. It builds on digital logic theory and devices to develop more complex systems. Graded assignments emphasize understanding and applying the basics of computer system organization, design, and operation. Students analyze contemporary computer organization by examining the operation of a program at the register level. Students learn, simulate, and program a modern processor. Assembly language programming provides system function control that bridges the gap between hardware and software. C programming demonstrates a high-level language greatly utilized in computing. The course introduces topics including RISC architectures, arithmetic processing, input/output, memory design, and parallel computing.