Welcome to the homepage for COS 316, Principles of Computer System Design, Fall 2019.
Description. This course teaches students the design, implementation, and evaluation of computer systems, including operating systems, networking, and distributed systems.The course will teach students to evaluate the performance and study the design choices of existing systems. Students will also learn general systems concepts that support design goals of modularity, performance, and security. Students will apply materials learned in lectures and readings to design, build and evaluate new systems components.
Textbook. There is no required textbook in this course, because there is no one book that covers the right material in an up-to-date fashion. Some required articles/papers/blogs/etc. will be posted on-line. We also suggest the following textbook:
Principles of Computer System Design by M. Frans Kaashoek, Jerome H. Saltzer. Morgan Kaufmann. May 2009
An online version of the textbook is available at Association of Computing Machinery (ACM), which is available to all student members. Membership ($19) in ACM also provides access to a wide variety of other resources, such as textbooks and videos on the Go programming language and the Git distributed version control system.
Grading. Assignments - 50%; Final Project - 10%; Two Exams - 30%; Potential Problem Sets - 10%
Below you will find our contact information, but please consider posting your question on Piazza before contacting an individual staff member.
Prof. Amit Levy
Dr. Alan Kaplan
221 Nassau St
David Hao Liu
Lectures meet on Monday and Wednesday 1:30-2:20pm in CS 104. There are two in-class written exams: Wednesday October 23 and Wednesday December 11.
|9/11||Introduction to Networking||Slides||The Rise of Worse is Better", Section 2
Worse is Better is Worse
|9/16||Intro. to Distributed Systems||Slides||
Chord: A Scalable Peer-to-Peer Lookup Protocol
for Internet Applications
|9/18||Introduction to Security||Posted Here Soon|
|9/23||Introduction to Operating Systems||Posted Here Soon|
|9/25||Introduction to Naming||Posted Here Soon|
|9/30||File Systems Pt. 1||Posted Here Soon|
|10/2||File Systems Pt. 2||Posted Here Soon|
|10/7||Naming in Networking (Prof. Rexford)||Posted Here Soon|
|10/9||Introduction to Caching||Posted Here Soon|
|10/14||CPU Memory Hierarchy Pt. 1||Posted Here Soon|
|10/16||CPU Memory Hierarchy Pt. 2||Posted Here Soon|
|10/21||DNS caching (Prof. Freedman)||Posted Here Soon|
|11/4||Introduction to Resource Management||Posted Here Soon|
|11/6||Network Layers (Prof. Rexford)||Posted Here Soon|
|11/11||Wireless Networking (Prof. Jamieson)||Posted Here Soon|
|11/13||SDNs (Prof. Freedman)||Posted Here Soon|
|11/18||Introduction to Virtualization||Posted Here Soon|
|11/20||Consistency Models (Prof. Lloyd)||Posted Here Soon|
|11/25||Processes, VMs, TCP streams, Transactions||Posted Here Soon|
|12/2||Introduction to Access Control||Posted Here Soon|
|12/4||Discretionary Access Control & ACLs||Posted Here Soon|
|12/9||Mandatory Access Control & IFC||Posted Here Soon|
|9/12||Let's Get Go-ing||Slides|
|9/26||What is HTTP?||Posted Here Soon|
|10/3||Performance Testing/Tuning||Posted Here Soon|
|10/10||LRU Eviction||Posted Here Soon|
|10/17||FUSE||Posted Here Soon|
|10/24||TBD||Posted Here Soon|
|11/7||Reflection in Go||Posted Here Soon|
|11/14||Using SQL in Go||Posted Here Soon|
|11/14||Go Concurrency Primitives||Posted Here Soon|
|12/5||TBD||Posted Here Soon|
|12/12||TBD||Posted Here Soon|
Assignments will be published, submitted and testing using GitHub. You will need to create a GitHub account using your Princeton email address.
All assignments must be done in groups of two partners.
There is a final project, which is due on Dean's Date January 14, 2020.
Late assignment penalties will be waived only in the case of unforeseeable circumstances like medical emergencies, as documented by your Dean or Director of Studies and our approval.
Configure Virtual Environment
|9/24 @ 23:00||Assignment 1:
This course permits many forms of collaboration, including help from course staff, classmates, and lab TAs. Googling is allowed, even encouraged, in this course. You may use any online resource as long as you cite the source (e.g., including the URL of source in the code). Here is a summary, where ✔ means YES and ❌ means NO. If you have any questions, please contact the course staff.
|activity||your group||course staff||COS 316 grads||classmates||other|
|discuss concepts with ...||✔||✔||✔||✔||✔|
|acknowledge collaboration with ...||✔||✔||✔||✔||✔|
|expose solutions to ...||✔||✔||❌||❌||❌|
|view solutions from ...||✔||❌||❌||❌||❌|
|plagiarize code from ...||❌||❌||❌||❌||❌|
Your solutions. The term solutions refers to any of the products created when completing an, such as source code (including comments) and documentation. It includes both finished and unfinished products, regardless of correctness or completeness.
Working Groups. All assignments require you to work in groups. Here are the rules regarding group work.
Why Work in Groups? There are several reasons for our decision to make you work in groups.
Plagiarism. As members of the University community, students are bound by the rules and procedures described in Rights, Rules, Responsibilities.
All the rules above continue to apply after assignments are graded and after the end of the semester.
This schedule may change. We will update this calendar with the latest information when we need to make scheduling changes. Though last-minute changes are rare, we encourage you to check this calendar again before going to office hours.
Calendar events are loading...