MIT6.033 Computer System Design (Spring 2021)

Pre-course:

  • 6.004 Computation Structures | computing architectures
  • 6.006 the Introduction to Algorithms | Introduction to Algorithms

Ps. 6.033 Computer System Design and 6.S081 Operating System Engineering are both pre-courses for 6.824 Distributed Systems.

Course is an introduction to

MIT6.033 Computer System Design is a required undergraduate course in Computer Science at MIT. The course covers engineering Design of Computer software systems and hardware systems: Techniques for controlling complexity, using client-service design to ensure strong modularity, operating system, performance, networking, naming, security and privacy, fault tolerant systems, atomicity and concurrent activity coordination, error recovery, etc.

MIT 6.033 contains four modules of technical content: operating systems, networking, distributed systems, and security.

The study of realistic system provided by literature provides reference and comparison for system design learning. The course includes a semester-long collaborative Design Project in which students participate in comprehensive communication skills.

Course objectives

Enables students to design their own distributed systems to solve real-world problems. Demonstrating your design choices is also part of your ability to design distributed systems.

This main objective is supported by these other objectives:

  • Students will be able to analyze and evaluate existing systems, as well as their own system designs. As part of this goal, students will learn to identify design choices in existing systems.
  • Students will be able to apply the technical knowledge learned in the course to new system components. This means learning to identify and describe:
    • How common design patterns, such as abstraction and modularity, can be used to limit complexity in computer systems.
    • How operating systems use virtualization and abstraction to ensure modularity.
    • How was the Internet designed for high-volume, multi-application, competing economic interests
    • How do you build reliable, usable distributed systems on unreliable networks
    • Common pitfalls for computer system security, and how to deal with them

Curriculum framework

Lectures

Lectures will teach students the technical details needed to design their own computer systems, and put these details into a larger picture: the picture of the specific domain system and the picture of the system as a whole.

Recitations

Recitations give students an opportunity to practice systematic analysis and oral communication skills. Each Recitation revolves around a specific paper about the system. By reading these papers, students can better understand how communication in the field is completed. Recitation is discussion-based and allows students to practice their ability to analyze, evaluate, and communicate systems

Note: This part is the weekly reading, retelling and discussion for MIT students, aiming at training students’ oral expression ability and describing system design ability. I think this is a very important skill, especially in a collaborative development environment such as team/open source community, to be able to accurately, clearly and concisely explain your system design, design choices and trade-offs. This section can be used as an extended reading, focusing not only on how some of the actual systems were designed, but also on how the author explained his system design choices to others.

Writing Tutorials

These tutorials will teach you the theory and practice of communication in this course and help you prepare for assignments, especially the Design Project. You will fluency in different communication genres, develop the strategies and skills needed to present technical concepts to different audiences, and learn how to use writing to foster and deepen your technical understanding.

Note: This project is mainly designed for MIT students who need to work as a team. The assignment asks students to work in teams of three to design their own system to solve a real-world problem. Systems in the real world are not built by one person, but by teams. Design Project includes reports, demos, peer reviews, etc. Those who are interested can go to the Design Project page to check.

Curriculum resources

Course website: web.mit.edu/6.033/www/ Textbook: ocw.mit.edu/resources/r…

Unfortunately, as far as I know, there is no Chinese course translation yet.

The assignment and design Project that are not accessible to non-MIT students have been removed. Just keep lectures, recitation, and writing tutorials.

LEC: lectures REC: recitations TUT: writing tutorials

Operating Systems

How operating systems can be modularized in a “single host” context.

Lectures

LEC 1: Enforced Modularity via Client/server Organization

LEC 2: Naming

LEC 3: Virtual memory

LEC 4: Bounded buffers and locks

LEC 5: Threads

LEC 6: OS structure, Virtual Machines

Recitations

REC 1: Introduction to 6.033 Recitations

REC 2: We Did Nothing Wrong

REC 3: DNS

REC 4: UNIX

REC 5: UNIX

REC 6: DP Discussion

Networking

How data and requests are exchanged between machines in a multi-machine system. How to scale up.

Lectures

LEC 7: Intro to networking and layering

LEC 8: Network Layer: Routing

LEC 9: BGP

LEC 10: Transport Layer: TCP

LEC 11: In-network Resource Management

LEC 12: Application Layer

LEC 13: Canceled

EXAM: Midterm

Recitations

REC 7: Ethernet

REC 8: Encapsulation

REC 9: Overlay Networks (RON)

REC 10: Performance, Measurement, and Evaluation (RON)

REC 11: DCTCP

REC 12: End-to-end Arguments

REC 13: Canceled

Distributed Systems

What problems/errors may be encountered in a networked distributed system and how to deal with them?

Lectures

LEC 14: Reliability

LEC 15: Transactions

LEC 16: Logging

LEC 17: Isolation

LEC 18: Distributed Transactions

LEC 19: Replication

Recitations

REC 14: GFS

REC 15: MapReduce

REC 16: ZFS

REC 17: Canceled

REC 18: Consistency Guarantees

REC 19: Raft

Security

Lectures

LEC 20: Intro to Security + Authentication

LEC 21: Low-level attacks

LEC 22: Secure Channels

LEC 23: ToR

LEC 24: Network Attacks

LEC 25: Wrap-up

EXAM: Final exam

Recitations

REC 20: Raft

REC 21: Meltdown

REC 22: DNSSEC

REC 23: Canceled

REC 24: Mirai

Writing Tutorials

TUT 1: Intro to 6.033 Communication

TUT 2: Consensus and Reasoning About Systems

TUT 3: Reading for Systems Concepts

TUT 4: Collaboration and Collaborative Writing

TUT 5: Visual Design, Figures, and Diagrams

TUT 6: Assembling the DPPR

TUT 7: DP Presentation

TUT 8: Responding to Feedback

TUT 9: Analysis and Evaluation

TUT 10: Peer Review

TUT 11: Final DP Report