Department of Computer Science 

CS 6410: Advanced Systems (Fall 2016)

Tue/Thur 10:10-11:25; 114 Gates Hall

* Home
* Schedule
* Mini Projects
* Project
CS 6410 is an advanced course in computer systems targetted to CS and other PhD students interested in systems as a graduate research area. 

Getting permission to attend:
PhD students from any program at Cornell are welcome, but non-PhD students must obtain written permission from Professor Weatherspoon to attend this class.   We often grant permission to attend CS 6410 to CS undergraduates with strong prior background and grades in systems courses who plan to pursue PhD studies after graduating.  But CS 6410 is generally not a suitable course for MEng students (they tend to find this class very theoretical and generally prefer courses with a more pragmatic, practical approach such as CS 5412).  Further, CS 6410 might not be suitable for undergraduates who have had difficulty in their prior systems courses, or who are not on a PhD research "track".

To request permission to register in CS6410, email to Professor Weatherspoon (  Include a cover letter explaining why you hope to take this class and what you hope to gain from it, your grades in relevant systems courses, and describing any research projects you may have worked on.

CS6410 can be used to satisfy all CS PhD program requirements in the systems area.
Starting in Fall 2014, CS6410 was changed to satisfy more of the CS PhD requirements than was historically the case.  As a Cornell CS PhD student, you are required to demonstrate basic competence in systems at the CS 4410 level, to take a systems breadth course, and to take at least one 6xxx course in the "systems style".  CS6410 can satisfy all of these requirements; in the past, it only addressed the breadth requirement.

In the past you needed to take CS4410 or the CS4410 final to satisfy the basic competence aspects, and then most students also took CS6410 to satisfy the graduate breadth requirement.  This is no longer the case: starting in Fall 2014, you can take CS4410 plus some other course in the "systems style" (there is a list), or you can skip CS4410 (if you know the material) and then just take CS6410. 

For students who come in with prior background in operating systems and who opt to just take CS640, we still want to ensure that everyone has hands-on experience with basic O/S ideas.  With this in mind, we added two small homework assignments to CS6410 that will be carried out in the first weeks of the class.   In Fall 2014 this went fairly smoothly, and with some small tweaks, we think that the Fall 2016 experience should be quite positive.

   * One takes a simple program and scales it to be parallel and to run on a very large data set.  The core challenges in doing this center on understanding the performance properties of modern multicore processors and their memory models, and hence this will give you hands-on experience with multithreaded concurrency and with modern systems issues in a very practical way. 

    * The second involves using Amazon's EC2 system, specifically their elastic beanstalk platform.  You'll run a kind of locking service based on the Paxos protocol, and then will explore performance issues when this is scaled up.  The idea here is to gain experience with cloud computing.

Notice that both assignments should be valuable to you no matter what you plan to do research on: even a person working on NLP or computer vision has to worry about performance and might end up needing to run some software on EC2.  This isn't accidental: We picked these topics specifically with the goal that every student should find them useful.  

CS6410 previously satisfied the remaining PhD level systems requirements and it still does so.  Beyond the new assignments just mentioned, you'll do a CS6410 term project, will read a pile of very interesting papers, and present one or two of them.  We'll discuss the details of how this will work in class. 

Instructor:  Prof. Hakim Weatherspoon

        (Office hours: Tue/Thur 1:00-2:00pm, 427 Gates Hall, or by appointment)

TA:  Zhiming Shen

Class Admin: Jessica Depew 
        (4th floor admin suite, Gates Hall)

Class Meetings: Attendance is required.  This class is structured as a discussion and everyone participates.
        We will meet Tuesday and Thursday, 10:10-11:25, in 114 Gates Hall.

[ Announcements | General Info | Paper Reading | Paper Presentations | Projects ]



General Information

[ Overview | Prerequisities | Requirements | Grading | Collaboration | Writing a Review | Preparing Presentations ]

Course Overview

CS6410 is a graduate-level reading course that covers classic and recent papers in operating systems and distributed systems. Students will:
  • learn about current research perspectives on computer systems, including advanced systems abstractions, principles, and artifacts that have had lasting value,
  • understand attributes of systems research that is likely to have impact,
  • become comfortable navigating the literature in this field,
  • gain experience in thinking critically and analytically about systems research, and
  • acquire the background needed to work on research problems currently under study at Cornell and elsewhere.

CS6410 is thus aimed primarily at the research community.  In contrast, CS5412 (Cloud Computing) offers a more practical, hands-on perspective on the same kinds of material.  MEng students are therefore encouraged to take CS5412 and not CS6410, and PhD students (or undergraduates who plan to pursue a PhD) are encouraged to take CS6410.  Notice that we did not say "computer science" students: CS6410 often includes PhD students from ECE, CAM, IS and other fields.  We also often have undergraduates in the class (typically, seniors who are thinking of pursuing a PhD).  And finally, MEng students aren't turned away.  We simply require that they have backgrounds as strong as those of the PhD students and that they participate in identical ways.  Follow the instructions at the top of the "home" page for details on how to request permission to attend.

Course Prerequisities:

Attendees are expected to have mastered the material in CS 3410 (CS 314) or CS 3420 (ECE 3140), and also CS 4410 (CS 414).   If you didn't enjoy CS 4410, you won't have fun in CS 6410.  CS6410 is definitely not a good substitute for CS 5412, so if your real goal is to take CS 5412, don't take CS 6410 as an alternative.  The classes are very different.

If you took a solid architecture and O/S course as an undergraduate please do not repeat those courses at Cornell.  There is no reason at all to take CS4410 at Cornell if you took a similar course previously.  CS6410 would suffice.  On the other hand, if you lack CS4410 experience and do take the course here, you won't need to take CS6410 unless you wish to do so.  There are other courses in our list that can satisfy the "systems style" requirement.

Cornell PhD students (from any PhD program) with appropriate background may enroll without special approvals.  Undergraduates and MEng students are required to obtain Professor Weatherspoon's explicit permission before enrolling.  If you are uncomfortable with an email,  meet with Professor Weatherspoon either prior to the first day of classes, or after class on the first day, to discuss your level of preparation and goals.

Course Requirementss
  • Assignments:  As noted above, these are a new feature of CS6410 added to make it possible to satisfy the systems competence requirement of the CS PhD program without taking CS4410 and without taking the final exam from CS4410.  There are two assignments, one aimed at getting experience with a multicore processor and learning about the performance-limiting features of these architectures, and the other focused on hands-on experience with Amazon's elastic beanstack, which is typical of cloud computing.  The idea is that this would be broadly useful to every student, including those who plan to do research on topics remote from systems.
  • Presentations: Each student is expected to prepare at least one presentation and lead a discussion one or more times during the semester (see below). A presentation/discussion will be of papers drawn from the reading list of the course.
  • Participation: All students are expected to participate in class by asking questions of the speakers and participating in the follow-up discussion on the assigned readings.   Every student is expected to attend every class.
  • Readings: All students are required to read papers in advance of the class and submit a review via Course Management System (CMS). Paper reviews succinctly discuss the paper's strengths, weaknesses, and potential improvements or areas of future research (See how to prepare a review below).
  • Project: This is distinct from the two assignments.  The project in CS 6410 is an open-ended research project, done individually or perhaps in groups of two. The project requires an initial proposal, a midterm survey paper, a final report (both written and presented), and reviews of others' projects. More information can be found on the Project page.  Some projects involve working on a research paper of your own, some involve running an experiment or building something, and one can even come up with other kinds of projects that collaborate with researchers at companies like Facebook, Microsoft or Google. 
Note: We normally don't allow people to audit this class.  We want everyone in the room to be "all in".

Grading Policy:

  • 20% the two new assignments.
  • 20% class presentations, written reviews, in-class participation.
    • 20% Class Presentations. This grade will be based on both the number and quality of presentations you give. Quantity is not a substitute for quality, but failing to do your fair-share of the presentations will impact your grade.
    • 10% Written reviews
    • 10% Participation in class discussion.
  • 50% independent projects.
    • 5% Peer reviews.
    • 5% Initial project proposal.
    • 15% Midterm survey.
    • 25% Final project (written report and demo).
  • 5% Lab Assignments
  • 5% Subjective factors, including regular in-class quizes based on required readings.

Collaboration Policy

You may discuss the questions for each discussion paper with other students, but you may not look at other student's answers. You must write your answer yourself.

To draw a very clear line, you may use any idea from any other person or group in the class or out, provided you clearly state what you have borrowed and from whom. If you do not provide a citation---that is, you turn other people's work in as your own---that is cheating. Anything else is fair game. Of course, we will be grading you on the ideas you have added, but you should always borrow as much as you can as a starting point as there is no point in reinventing the wheel.

Paper Reading

An online syllabus with links to all the papers is available.   Click here and here to find out how to write a review.

Writing Paper Reviews

Paper reviews should be short, concise, and most importantly, critical.  For weeks when we have two papers, reviews would normally be about 1 1/2 or 2 pages long, in normal 12 point single-spaced format.  They should include:

  • Short paragraph (3-4 sentences) summarizing the paper and discussing any of the following suggest points:
    • What do you feel the main contribution of this paper is?
    • What did you find interesting about this work?
    • What's the essential principle that the paper exploits?
  • Two or three major strength of the paper (typically one sentence for each point)
  • Two or three weakness of the paper (typically one sentence each point)
  • One question or future work direction you think should be followed (optional)

Do not accept what the authors tell you at face value.  In reading these papers, adopt a skeptical view: listen to what the authors assert but keep an open mind.  Insist on being convinced by them.  Not every paper accomplishes its grand goals.  And be skeptical too about evaluations.  If a paper has three key goals, the evaluation should (if it is feasible/practical to do so) include experiments to support each of those goals, or perhaps all of them at once.  If a paper is more abstract or theoretical, it should still offer evidence in support of the claims.  If you are not convinced, explain what you looked for and why you are not convinced.

Notice that the word skepticism, in English, is not the same as the word hostility.  We are not saying that you should be angry or that you should attack every idea.  We are simply saying: the authors make claims.  Did they convince you?

Because we often have two related papers (perhaps both addressing aspects of one quesiton, or perhaps even disagreeing and contrasting in some way), you should try and understand how the two assigned papers are connected.  Then include a short final section in your essay that specifically discusses this connection.

  • What is the commonality between the papers?  Keep in mind that this might not be something the papers explicitly "say" but might be the area within systems that the papers are situated within, or the kind of thinking that motivated the work.
  • Are these papers both in agreement and looking at distinct aspects of some shared issue?  Are they disagreeing in some deep sense?  Or do they look at different facets of a broader question?
  • Do you have an opinion on this question?  What is your view, and how does your view relate to the one in the papers.

Additionally, we will sometimes post an extra question on CMS more than 48 hours before class. If we do this, that question should be answered in the review as well.

In all, a review would typically include 8 to 12 sentences per paper at the minimum, to over two to three paragraphs at most.  The comparison or contrast might take a few sentences more.  If we ask a question on CMS, this would either be addressed in your reviews and comparison, or you might need to write an additional couple of sentences.  But  sometimes we will assume that it is obvious what question arises when reading these two papers, side by side.  In such cases we will not pose a questions.

You are not required to read or discuss the additional readings listed for many of the lectures.  But if you wish to do so, you are certainly welcome to include extra discussion tied to those additional readings.

Paper Presentations

How to Prepare and Lead a Presentation

  • [Sept 4] Class participants should be prepared to select the first round of topics they will lead.
  • [At least 5 class meetings (=2 weeks + 1 meeting) before the scheduled date for your presentation] Meet with the instructor to agree on what ideas to focus on and what papers to cover.
  • [At least 3 class meetings (=1 week + 1 meeting) before the scheduled date for your presentation] Meet with the instructor to go over a draft of your presentation. Prior to that meeting, submit either a set of written (typeset) lecture notes if you are giving a "chalk talk" or a printed copy of slides if you are giving a powerpoint presentation.
  • [At least 2 class meetings before the scheduled date for your presentation] Meet with the instructor
    • for a final review / dry-run of your presentation, and
    • to decide the set of papers that constitute the assigned reading

Don't expect you'll be able to schedule the above meetings at the last minute. Schedules fill up, and the instructor is not infrequently away from Ithaca. Email the instructor a week or so in advance of when you'll want to have the above meetings.

Questions or comments? email

Policy on academic integrity

Hakim Weatherspoon
Last modified:  August 17. 2016.