Fundamentals of Computer Systems is about two related areas of knowledge.
First is digital logic, which concerns the design of circuits to implement logic functions using standard components such as AND-gates, OR-gates, and inverters. The circuits might be used to control the flow of data within a computer, or the processing of the data (e.g., arithmetic operations), or to control the overall action of a computer. Students will learn how to specify logic functions precisely, to manipulate formal expressions, and to implement them efficiently. They will learn how to design the basic building blocks, including the control, of modern digital computers. Both combinational and sequential circuits will be covered.
The second part of the course involves the structure of digital computers. Focussing our attention on modern RISC architecture, we will discuss the functional blocks such as the arithmetic unit, register files, and memory. Single-cycle and multiple-cycle implementations will be presented and then students will be introduced to the concept of pipelining. They will learn the basics of caches and virtual memory. Machine language programming is a feature of the course. Main memory systems, currently DRAM, will be discussed as well as the operation of magnetic disk drives. Some aspects of I/O will also be introduced.