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