CS244 is a graduate course in computer networks. The course is being offered for the second time this year.
The goals for this class are:
To become familiar with the state of the art in networking research: network architecture, protocols and systems.
To gain some practice in reading research papers and critically understanding the research of others.
In the past two decades, the Internet has grown from a research tool to a fundamental part of society; something we all take for granted and use everyday. In this class we'll explore why the infrastructure was designed this way, and the underlying principles and design decisions. We'll explore the pros and cons of the current design, and give some thought to how we can make the Internet better in future.
Click here to see the latest announcements.
The prerequisite for this class is CS 144, EE 284 or the equivalent. It is necessary to have this background before taking the class, as we'll read a lot papers quickly without much time for catching up on the basics. The course assumes an understanding of topics in networking such as packet-switching, routing (distance vector and shortest path first), socket programming, and congestion control. You need an SUNetID to access the papers and print them. We won't be providing printed handouts for this class.
The course is quite strongly based on the model used in CS240 (upon which this description is heavily based). The course consists of lectures, readings, and one exam. The two most important things to know about the class: (1) the main goal is to have interesting in-class discussions and (2) we recommend you read each paper at least three times: twice very carefully, the last time focusing on the hard parts. For any artifact the paper describes you should draw a picture. This should all be done more than a day in advance so that it sinks in. Most of the work in this course consists of reading journal and conference papers. We will cover one or two papers for each class meeting. This class will be primarily discussion based (rather than organized around lectures). Active discussion will (hopefully) give you a non-trivial understanding of the material. The only way this approach can work is if you read the papers carefully. To encourage this, a significant fraction of your class grade will come from class participation and surprise pop quizzes. Class time will not be used to rehash the material in the papers. Instead, it will be used to highlight the important points and discuss some of the more interesting features. There will be as much as 10-15 hours of reading per week. Do not take this course unless you are willing and able to do a lot of reading.
The class is graded on a rough curve.
In-class Participation: 25%
Final (based on papers; no mid-term): 20%
Surprise Quizzes: 10%
Is class participation based solely on attendance? No. Attendance is a necessary but not sufficient condition for good class participation. As far as attendance is concerned, the general policy is that a student will automatically receive a deduction of one letter grade for missing more than 3 lectures. We will not take official roll during lecture, but because we make the effort to know everyone in the class. We will notice if a student is frequently absent. If you have any concerns about not being able to regularly attend class (e.g., you will have to miss several classes during the quarter) please discuss this as soon as possible with the course staff. Beyond attendance, we evaluate class participation largely by observing how prepared students are to discuss the covered paper when they come to class. This is not a trivial requirement because we expect papers to have been read thoroughly prior to lecture.
There will be one final exam in the slot scheduled by the registrar. Details will be posted when available.
We will have several surprise quizzes spread throughout the quarter. These will always take place in the first 10 minutes of class. The goal is to encourage attendance and for you to read the papers thoroughly. The quizzes won't be hard - if you carefully read the assigned papers, you can expect to get 100% on each quiz. For obvious reasons, there won't be any make-up pop quizzes for any reason.
Almost all questions should be posted to the class newsgroup, su.class.cs244 --- if you have a question, other people probably have the same one (or should). All course announcements will be put on to the class web page. The news group is a good place to advertise for study groups, ask questions of other students, etc. You'll find the course staff respond quickly to questions on the newsgroup - we will try to answer within 24 hours. If and only if your question is private (e.g. you are sick and have to miss class), then please send email to cs244-win0809-staff@lists.stanford.edu and prefix the subject line with "CS244" for a prompt response. Announcements from the staff will be sent via the cs244-win0809-students@lists.stanford.edu mailing list to which any registered student will automatically be added. Please don't ever send email to the class mailing list -- we'd all be flooded with emails. The names of the teaching assistants and all our office hours are posted on the Staff web page.
In previous years, several students taking CS244a were found guilty of violating the Stanford Honor Code. In this course, the Honor Code is taken seriously and I expect all students to do the same. The good news is that the vast majority of students do take the Honor Code seriously. The bad news is that historical evidence indicates that some students will submit work that is not their own, shortchanging not only their own learning, but undermining the atmosphere of trust and individual achievement that characterizes Stanford's academic community. To protect academic integrity and the interests of all students, the course staff will investigate all possible Honor Code violations and refer them to the Office of Judicial Affairs as necessary. I'm pleased to report that for the last time CS244 was offered, no-one was found to have violated the Honor Code. Please help us make it seven happy years in a row! If you have any questions or doubts about the Honor Code, please come and talk to me. Honor code violations are no laughing matter at Stanford and it is much better to ask what might seem like a silly question now than to risk your academic career. The Honor Code has a long tradition at Stanford dating back to Spring 1921 when the University first adopted the honor system. Today the Honor Code continues to govern academic conduct of both students and faculty at Stanford. The Honor code reads as follows: THE STANFORD UNIVERSITY HONOR CODE
The Honor Code is an undertaking of the students, individually and collectively: (i) that they will not give or receive aid in examinations; that they will not give or receive unpermitted aid in class work, in the preparation of reports, or in any other work that is to be used by the instructor as the basis of grading; (ii) that they will do their share and take an active part in seeing to it that others as well as themselves uphold the spirit and letter of the Honor Code.
The faculty on its part manifests its confidence in the honor of its students by refraining from proctoring examinations and from taking unusual and unreasonable precautions to prevent the forms of dishonesty mentioned above. The faculty will also avoid, as far as practicable, academic procedures that create temptations to violate the Honor Code.
While the faculty alone has the right and obligation to set academic requirements, the students and faculty will work together to establish optimal conditions for honorable academic work.
The underlying premise of the policy is that all academic work represents independent, original work of the author and the Honor Code aims to foster an academic environment that encourages adherence to these principles. As we are all bound to respect and uphold the Honor Code, it is important to define acceptable and unacceptable behaviors with regard to this course so as to eliminate any ambiguity. Permitted Collaboration: The following items are encouraged and allowed at all times for all students in this class:
Discussion of material covered during lecture, problem sessions, or in handouts
Discussion of the requirements of an assignment
Discussion of the use of tools or development environments
Discussion of general approaches to solving problems
Discussion of general techniques of coding or debugging
Discussion between a student and a TA or instructor for the course
Collaboration Requiring Citation: Two students engaging in more detailed discussions must be careful to document their collaboration. Students are required to include the names of those who provide specific assistance to properly credit their contribution, in the same manner as one would cite a reference in a research paper. The expectation is that even with a citation, the author must be able to explain the solution. Some examples of collaboration that require citation include:
Discussing the "key" to a problem set or programming assignment. Problem set questions are often designed such that the critical concept takes careful thought and gaining that insight from someone else must therefore be documented.
Discussing the design of a programming project. Design is a crucial aspect of the programming process and discussion can be valuable. Any design input received from others must be cited.
Receiving assistance from another student in debugging code. While the TAs are the preferred source for advice, any detailed assistance from someone else must be credited.
Sharing advice for testing. For example, if someone provides important information on lessons learned ("my program didn't handle the case where the value was 0") that source must be credited.
Research from alternative sources. Researching related topics, such as through the Internet, must be documented if the solution submitted is derived from the research information.
Unpermitted Collaboration: All submissions must represent original, independent work. Some examples of activities that do not represent original work include:
Copying solutions from others. In particular, do not ask anyone to provide a copy of his or her solution or, conversely, give a solution to another student who requests it. Similarly, do not discuss algorithmic strategies to such an extent that you and your collaborator submit exactly the same solution. Use of solutions posted to websites, such as at other universities, is prohibited. Be aware that we photocopy some of the exams prior to handing them back.
Using work from past quarters. The use of another student's solution or the posted class solutions from a previous quarter constitutes a violation. We use a sophisticated tool that cross-checks every assignment against every other assignment submitted this year, and previous years. It catches common code, even if comments and variable names are changed. In fact, in order to "fool" it, you have to change so much code that it would be quicker to do the assignment yourself. Developing good problem set questions and programming assignments often takes years and new assignments invariably have problems and that require polishing. To provide the most effective exercises, questions and assignments are commonly reused. Students retaking the course are expected to notify the course staff to avoid coming under suspicion.
Studying another student's solution. Do not read another solution submission whether in electronic or printed form, even to "check answers".
Debugging code for someone else. When debugging code it is easy to inadvertently copy code or algorithmic solutions. It is acceptable to describe a problem and ask for advice on a way to track down the bug.
This section on the Honor Code was based on a handout from Tom Fountain, who teaches EE182 at Stanford. Some portions are based on similar collaboration policies written by Eric Roberts, Julie Zelenski, and the Computer Science Department at Brown University.