Lecture 17: Principles of System Design

  • Let's take a step back and look at the big picture.
    • This class is about implementation-driven lectures. The code teaches the material.
    • However, you also need to walk away from this course with an understanding of the basic principles guiding the design and implementation of large systems, be they file systems, multithreaded RSS feed aggregators, HTTP proxies, or MapReduce frameworks.
    • An understanding of and appreciation for these principles will help you make better design and implementation decisions should you take our more advanced systems courses.
      • CS140: Operating Systems, which has you design and implement processes, threads, virtual memory, and a much more robust filesystem than what you were charged with implementing for Assignment 2.
        • CS110 emphasizes the client use of processes, threads, concurrency directives, and so forth. CS140 is all about implementing them.
      • CS143: Compiler Construction, which has you implement a pipeline of components that ultimately translates Java-like programs into an equivalent stream of assembly code instructions.
      • CS144: Computer Networking, where you study how computer networks (the Internet in particular) are designed and implemented.
        • CS110 emphasizes the client use of sockets and the socket API functions as a vehicle for building networked applications. CS144 is all about understanding and, in some cases, implementing the various network layers that allow for those functions to work and work well.

 

These slides are the result of a series of email exchanges and conversations with Mendel Rosenblum (CS110, CS140, and CS142 instructor) and Phil Levis (CS110E and CS144 instructor).

Lecture 17: Principles of System Design Let's take a step back and look at the big picture. This class is about implementation-driven lectures. The code teaches the material. However, you also need to walk away from this course with an understanding of the basic principles guiding the design and implementation of large systems, be they file systems, multithreaded RSS feed aggregators, HTTP proxies, or MapReduce frameworks. An understanding of and appreciation for these principles will help you make better design and implementation decisions should you take our more advanced systems courses. CS140: Operating Systems , which has you design and implement processes, threads, virtual memory, and a much more robust filesystem than what you were charged with implementing for Assignment 2. CS110 emphasizes the client use of processes, threads, concurrency directives, and so forth. CS140 is all about implementing them. CS143: Compiler Construction , which has you implement a pipeline of components that ultimately translates Java-like programs into an equivalent stream of assembly code instructions. CS144: Computer Networking , where you study how computer networks (the Internet in particular) are designed and implemented. CS110 emphasizes the client use of sockets and the socket API functions as a vehicle for building networked applications. CS144 is all about understanding and, in some cases, implementing the various network layers that allow for those functions to work and work well. These slides are the result of a series of email exchanges and conversations with Mendel Rosenblum (CS110, CS140, and CS142 instructor) and Phil Levis (CS110E and CS144 instructor).

Lecture 17: Principles of System Design

By Chris Gregg

Lecture 17: Principles of System Design

  • 1,563