Embedded EthiCSTM @ Harvard Bringing ethical reasoning into the computer science curriculum

Operating Systems (CS 161) – Spring 2019

First time reviewing a module? Click here.

Click  to access marginalia information, such as reflections from the module designer, pedagogical decisions, and additional sources.

Click “Download full module write-up” to download a copy of this module and all marginalia information available.

Module Topic: Safety and design of Operating Systems
Module Author: Kate Vredenburgh

Course Level: Upper Level Undergraduate
AY: 2018-2019

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)”

Semesters Taught: Spring 2019, Spring 2020Spring 2021, Spring 2022

Tags

  • systems (CS)
  • cost-benefit analysis (phil)

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.

Goals

Module Goals

  1. Introduce students to the framework of cost-benefit analysis as a tool for thinking through ethical tradeoffs.
  2. Familiarize students with the strengths and criticisms of this framework.
  3. Give students practice applying cost-benefit analysis to make a decision about whether to use fine- or coarse-grained locking in an imaginary scenario.

Key Philosophical Questions

  1. How should software developers make tradeoffs between performance and correctness?
  2. What are the strengths and weaknesses of the cost-benefit analysis framework?
  3. Does the distribution of costs and benefits matter morally?
  4. Should the calculation of costs and benefits be sensitive to individuals’ responsibility for those costs and benefits?
  5. Can costs and benefits be monetized, or otherwise placed on a single scale, or are they instead incommensurable?
  6. Should future costs and benefits be discounted?

Materials

    Materials

Cost-Benefit Analysis gives an introduction to cost-benefit analysis. “Pricing the Priceless” outlines arguments in favor of and against cost-benefit analysis.

  • Boardman (2006), “Cost-Benefit Analysis: Concepts and Practice, excerpts.”
  • Heinzerling and Ackerman (2002), “Pricing the Priceless.”

Key Philosophical Concepts

  • Costs and benefits
  • Discounting
  • Distribution
  • Incommensurable values

Implementation

Class Agenda

  1. Introduction to costs and benefits and the problem of tradeoffs.
  2. Example: fine- vs. coarse-grained locking and the trade-off between performance and correctness.
  3. Cost-benefit analysis.
  4. Criticisms of cost-benefit analysis.
  5. Active learning activity: choosing between fine- and coarse-grained locking.

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.

Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 4.0 International License.

Embedded EthiCS is a trademark of President and Fellows of Harvard College | Contact us