This course focuses on computer systems and low-level programming. The major topics are the relationship between the computer architecture (the hardware) and the applications that run on it (the software), and the issues that influence the design of both. Programs will be written in both C and x86-64 assembly, and may involve some GNU tools in the Linux environment. We will explore how instructions are encoded and executed and how binary data types are encoded and interpreted by computer hardware, and how these matters relate to the performance and reliability of applications.
View course outline