6.033 | Spring 2018 | Undergraduate

Computer System Engineering

Week 1: Operating Systems Part I

Recitation 1: Worse is Better

Lecture 1: Coping with Complexity: Enforced Modularity via Client/server Organization

Lecture 1 Outline

  1. Introduction to Systems
  2. Why is Complexity Bad?
  3. Mitigating Complexity
  4. Enforced Modularity
  5. Other Goals

Lecture Slides

Reading

  • Book sections 1.1-1.5 and 4.1-4.3

Recitation 2: We Did Nothing Wrong

Tutorial 1: Introduction to 6.033 Communication

Most of these tutorials will teach the communication theory and practices of this course, and assist you in preparing for the assignments. You’ll become fluent in a variety of communication genres, develop strategies and skills needed to present technical concepts to different audiences, learn how to use writing to develop and deepen your technical understanding—and get specific, directed instruction on writing and presenting your 6.033 assignments. A handful of the tutorials will be dedicated to discussing the design project.

System Critique Assignment 1: Evaluate and Assess a Domain Name System (DNS)

Overview of Critique Assignments

In 6.033 you’ll complete a series of three critiques, designed to build analytical and communication skills. The first critique requires you to understand and assess a distributed system based on an analytical framework presented in the critique worksheet (PDF).

In the second critique (of a different system), you’ll use your answers to a similar worksheet to write a 2–3 page critique of the system. The third critique will take the form of a peer review of another team’s Design Project Report. You’ll receive instruction about each of these critiques as the semester progresses.

This Critique

For this first critique, you should evaluate and assess Domain Name System (DNS) using the critique worksheet (PDF). This worksheet walks you through the process of analyzing the system described lecture and in the textbook.

We are intentionally releasing this assignment before you have learned about DNS; that’s because we wanted you to have the worksheet available as you did the reading (if you’ve done the reading without the worksheet, no problem! The worksheet should go quickly).

  1. Introduction to Systems
    • What is a system?
    • Complexity makes building systems difficult.
  2. Why is Complexity Bad?
    • Limits what we can build.
    • Causes lots of other problems.
  3. Mitigating Complexity
    • We mitigate complexity with modularity and abstraction.
      • Modular systems are easier to reason about, manage, change, improve.
      • Modularity reduces fate-sharing.
      • Abstraction lets us specify interfaces without specifying implementation.
      • Good abstraction decreases the number of connections between modules.
  4. Enforced Modularity
    • Soft modularity isn’t enough.
    • One way to enforce is with a client/server model.
      • Reduces fate-sharing.
      • Important: remote procedure calls (RPCs) != procedure calls (PCs).
        1. Have to deal with different types of failure (network, server,..).
          • These failures are tricky, but starting with a modular design will let us reason about them and deal with them.
  5. Other Goals
    • Beyond complexity, we might also want: scalability, fault-tolerance, security, performance, etc.
    • Starting with a good, modular design helps achieve these properties.
    • Difficult to get all at once; there are trade-offs.

Read “We Did Nothing Wrong: Why Software Quality Matters” by Deborah Gage and John McCormick in Baseline Magazine on March 4, 2004. This paper details a number of software systems that failed in spectacular ways, with most of the focus on a radiation machine made by Multidata called the Cobalt-60.

As you read, think about the following:

  • What fault(s) contributed to the failure of the Multidata machine?
  • Are there quality-control procedures that might have made a difference?

Question for Recitation

Before you come to this recitation, write up (on paper) a brief answer to the following (really—we don’t need more than a sentence or so for each question):

  • What was the Cobalt-60?
  • How did it fail?
  • Why did it fail?

(There are multiple possible answers to each of these questions.)

Course Info

Instructor
As Taught In
Spring 2018
Learning Resource Types
Lecture Notes
Written Assignments
Projects with Examples
Instructor Insights