About the course
Are you tired of being a wallflower at parties while a scintillating conversation about sharding is going on about you? Do you feel confused when someone mentions protocol buffers? Do you clam up at the bar when the discussion turns to authentication protocols? Are you confused as to why a public key should be longer than a symmetric key? If so, then this course is for you!
As its name - 01:198:417 - implies, this course is about distributed systems. We will cover a broad spectrum of topics encompassing system architecture, software abstractions, distributed algorithms, and issues pertaining to distributed environments such as security. Topics will range from the theoretical to the practical with a strong emphasis on the practical (such as remote procedure calls, firewalls, distributed file systems, clustering, authentication schemes, ...). If you are looking for a course that will teach you how to write applications using CORBA or web pages with ASP or PHP, you will be disappointed.
I don't expect you to find all the material interesting but my hope is that each student will find some subset interesting and/or useful. If you feel that there is a pertinent area that you would like to see covered, please let me know.
I taught this course to over 1,300 students for 27 semesters – every year since its inception at Rutgers in the fall semester of 1997 (I have been teaching Operating Systems at Rutgers since 1995). A tentative syllabus can be found at http://www.cs.rutgers.edu/~pxk/rutgers/syllabus.html. The course content been evolving through each semester and it will most likely change somewhat this semester as well since I am constantly trying to structure the course to include relevant topics. I will update the web pages as the course progresses.
Course information can be found on my main course web page http://www.cs.rutgers.edu/~pxk/rutgers. The links on that page will take you to prerequisites, homework assignments, exam info, and course policy. Be sure to check out the policy and prerequisites at the start of the course to avoid problems. The link at the bottom will take you to a news page (the link text will state when it was updated). This page will contain a running list of announcements such as homework assignments, exam announcements, corrections, and random comments. Please make a point of checking this page.
There is no required textbook for the course. There used to be (see Things you need) but most of the students in semesters felt that the lecture notes were sufficient and much of the material covered wasn't in the text anyway. It's your decision - you can give the $82 to the bookstore, keep it, or give it to me. I will make lecture notes (and other material) available in the Documents link. The lecture notes have been evolving each semester, and will continue to evolve. Please let me know of any errors, omissions, or unclear descriptions.
While the lecture notes attempt to cover most material that will be presented, I cannot guarantee that they will cover all of the material. The course is not a correspondence course. You are responsible for attending class and for all the material presented in class.
exams and assignments
In order for me to be able to give you a grade in this course, you will have a number of homework assignments, programming projects, exams, and possibly quizzes. My goal is not to torture you but to give you an opportunity to play with some of the material presented and for me to get enough material from you so that I can give you a fair grade without your performance determined by a single exam.
Since this is a fourth year computer science class, I expect that you have reasonable proficiency in programming in both C and Java. You cannot pass the course without completing the programming assignments. There will be an exam given roughly every third lecture for half a lecture along with a final exam. All exams will be weighted equally and the lowest grade will be dropped. My hope is that enough of you will do well in the course that you will not have to take the final exam. Largely to reward attendance and to ensure that you're not completely asleep (since it is a late class), I may choose to give a few quizzes. These will be intended to be quite easy and you will be able to complete them during the lecture using information obtained from the lecture.