Course: CS 161: Operating Systems
Course Level: Upper-level undergraduate
Course Description: "This is an in-depth course in operating systems design and implementation, focusing on multicore operating systems kernels. Operating systems are some of the most complex software artifacts that exist. Kernels abstract the features provided by computer hardware, making those features safer and more convenient to use. This means that OS designers have to understand how hardware works (at least at the level of specifications) and how software works. OS programmers also must become comfortable with navigating in, and contributing to, code bases too large to wholly understand. Most of us can pick up this important skill. (Course description )"
Module Topic: Ethical Tradeoffs in System Design: Performance versus Correctness
Module Author: Kate Vredenburgh
Semesters Taught: Spring 2019
Module Overview: In designing operating systems, engineers need to trade off different positive and negative features of operating systems that cannot be realized at the same time. Different ways of trading off desiderata impose different costs and benefits on relevant stakeholders. This module uses cost-benefit analysis as a moral framework to decide on the best way to decide about these tradeoffs, ethically speaking. The example of designing a system that has fine- or coarse-grained locking is used throughout the lecture as a way to think systematically about those tradeoffs using cost-benefit analysis.
Connection to Course Technical Material: This module uses the example of deciding whether to use fine- or coarse-grained locking to illustrate the tradeoff between correctness and performance. Fine- and coarse-grained locking are taught to students earlier in the semester.
Key Philosophical Questions:
Key Philosophical Concepts:
Cost-Benefit Analysis gives an introduction to cost-benefit analysis. “Pricing the Priceless” outlines arguments in favor of and against cost-benefit analysis.
Sample Class Activity:
Students are asked to read the scenario below:
Imagine that you work for a company that designs operating systems for large-scale water treatment plants. A water treatment plant removes contaminants from water that humans will consume and factories will use; factory equipment can tolerate higher levels of impurities than humans can tolerate. Representatives from the Cambridge city government are thinking about purchasing your OS. However, the officials complain that your OS has poor scalability as the number of contamination sensors to monitor gets large. You debug the scaling problem and learn that it is caused by the use of coarse-grained locking inside your OS. A city official suggests that you modify the OS to use fine-grained locking. However, the redesign would need to be finished quickly, or else you will lose the government contract.
Students are then broken up into small groups and asked to deliberate about what they would do in this scenario. Following the small group discussion, the Embedded EthiCS fellow leads a class-wide debrief.