CSE 421/521: Introduction to Operating Systems

Spring 2016 (1/25/2016–5/6/2016)
Enrollment: 139

Evaluations

Enrollment

114

Response Rate (%)

94

Instructor Rating (out of 5)

4.37

Course Rating (out of 5)

3.97

Full qualitative evaluation results are here. Note that this year we rolled out the new test161 OS/161 automated testing framework. This had the result of making the assignments more challenging, particularly for the undergraduates enrolled in the course. We plan to address this issue in future years. However, due to ongoing curriculum revisions we anticipate that operating systems will no longer be a required course for undergraduates within a few years. At that point the difficult level may prove appropriate for a self-selected group of students.

Summary

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. Just like budding artists study the works of the great masters for inspiration, we 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, and 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. And our TAs are experienced and will be available for many hours each week to provide individual 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.

Videos

Lectures

Recitations

Built by the metalsmith-blue Metalsmith pipeline.
Created 2/11/2016
Updated 12/27/2016
Commit ed24937 // History // View
Built 8/17/2017 @ 19:29 EDT