This course introduces C programming and essential concepts of operating systems, compilers, concurrency, and performance analysis, focused around several cross-cutting examples, such as memory management, error handling, and threaded programming. In this course, operating systems concepts are considered from the point of view of the application programmer, and the focus is on APIs for interacting with an operating system. A companion course, CSE 306, considers operating systems from the point of view of the OS kernel implementer.
Prerequisite
C or higher: CSE 220 and CSE major
Course Outcomes
Develop an understanding of the layers of software that lie between an application program and the underlying hardware and how they inter-operate.
Develop an ability to program with operating system APIs.
Develop an ability to write and analyze multi-threaded programs.
Textbook
Bryant and O'Hallaron, Computer Systems: A Programmer's Perspective, third edition, Pearson, 2016