Mobile Cancel Remember Choice Decide Later Remember Choice Decide Later

The Soul of the Machine

Open—Fall

The focus of this course is on the selection and interconnection of components used to create a computer. There are two essential categories of components in modern computers: the hardware (the physical medium of computation) and the software (the instructions executed by the computer). As technology becomes more complex, the distinction between hardware and software blurs. We will study why this happens, as well as why hardware designers need to be concerned about the way software designers write programs and vice versa. Along the way, we will learn how computers work from higher level programming languages, such as Java, Python and C, down to the basic zeroes and ones of machine code. Specific topics include Boolean logic, circuit design, computer arithmetic, assembly language, memory hierarchies, and, time permitting, mobile architectures. Students should have at least one semester of programming experience, preferably in C, C++, Java, or Python. Permission of the instructor is required.