This course covers two major topics in computer systems: assembly language programming and the architecture of a CPU. Programmers are normally familiar with the computer only from a very high level. This would consist of manipulating the computer using an object oriented programming language. They are not aware of the many abstraction layers that hide the underlying structure and functions carried out by a computer. The computer’s CMOS, Operating System and machine language manage the underlying mechanics. This course peals back these layers of abstraction allowing the student to directly manipulate and study the engineering of some of the most important components of a computer. Our method of study will be two pronged: First, we will look at the engineering of the computer’s CPU, RAM and topics about the motherboard as a whole. Last, we will learn the MIPS assembly language, as a tool to interact with the internal components as directly as possible. We will use SPIM as our MIPS simulator (download link on WEB CT).
Primary learning outcomes: to get a clear understanding of how the CPU and RAM are built and function from the microcircuit and functional levels. To then use an actual assembly language that uses the microcircuits discussed in class.
Secondary learning outcome: to demystify the abstraction layers in a computer system and to take advantage of the newfound capabilities. The student will be able to intelligently discuss the internal workings of computers and produce solutions that take advantage of the built-in hardware of a machine. Discussions with robotics and modems will be also discussed.