This course presents the foundations of computer architecture and organization as well as the fundamentals of operating systems. It covers the basic composition and functionality of a computer, starts from individual components and derives larger units from them. An important aspect is the understanding of mathematical foundations underlying computer circuits, which is why the course takes students from Boolean functions to adders, multiplexers, PLAs, and storage. The result is the basic von Neumann model of a sequential machine, which is treated from a modern perspective. Based on this understanding of computer hardware, the course then deals with the fundamentals of operating systems. Operating systems provide elementary functionality which interacts with specific hardware and provides abstract services for applications that do not need to know details about specific hardware. Typical functionality and services include resource and memory management, process management and processor scheduling, I/O, as well as protection and security mechanisms, all of which are addressed in class. Thus, this course forms the basis for understanding hardware and software interactions in larger systems.