Operating systems are the masterworks of the programming world: beautiful and sophisticated solutions to difficult design problems that have emerged from years of effort by thousands of skilled programmers. Like budding artists study the works of the great masters for inspiration, programmers study operating systems. While most of you will never contribute a single line of code to a production operating system, we hope that by the end of "CSE 421/521: Introduction to Operating Systems", you will have learned something from their elegance and maturity.
Understanding operating system design will make you a better software engineer. Struggling with operating system programming will make you a better programmer. CSE 421/521 gives you a chance to do both. We establish a conceptual track through lectures and exams, where we discuss the concepts and design principles of modern operating systems and how hardware devices such as the CPU, memory, and disks are multiplexed and abstracted. Equally important, however, is the programming track which proceeds through four assignments that give you the chance to implement core operating system functionality in a simplified development environment. After studying synchronization, you will implement synchronization primitives. After studying the system call interface, you will implement it. After studying virtual memory and address translation, you will design and implement a virtual memory subsystem.
Designing and implementing operating system concepts is not easy, and neither is this course. But we are here to help and committed to providing you with the support you need to succeed. Our online grading tools provide helpful feedback and allow you to repeatedly test and submit your assignments until you earn the grade you desire. Our TAs are experienced and will be available for many hours each week to provide individual help. And a number of successful previous students will return as volunteers to offer even more help. We expect that you will find this course difficult, but we hope you will also learn a large amount, have fun, and develop a passion for computer systems.