| Time |
Section 01: M, W 3:30 PM–5:00 PM |
| Place |
Section 01: SL310 (Science Library, Room 310) |
| Instructor |
Assistant Professor of Computer Science EB T-22 cs654-internal@cs.binghamton.edu (for class matters) kchiu@cs.binghamton.edu (for other matters) Office Hours (with 24 hour prior notification): To be announced, or by appointment Phone (do not leave voice mail): 777-7320 |
| Web Page | http://www.cs.binghamton.edu/~kchiu/cs654/ |
| Mailing Lists |
Public: cs654@cs.binghamton.edu (Subscribe at http://www.cs.binghamton.edu/mailman/listinfo/cs654/.) Internal: cs654-internal@cs.binghamton.edu |
This course is designed to provide a solid foundation and background in the field of distributed systems. I will try to strike a balance between learning about practical, modern technologies used in the real world, such as web services, and the foundations and principles of distributed systems.
A solid background in undergraduate operating systems and networking is required. You should also have a solid background in network programming in Java or C++. You should also have experience with developing on UNIX/Linux systems.
For background in OS, any relatively modern OS textbook can be used. A popular textbook is Silbershatz's Operating System Concepts: 6th Edition.
For C, I recommend Kernighan and Ritchie's The C Programming Language (Second Edition). For C++, I recommend Lippman's The C++ Primer (3rd Edition). For UNIX systems programming, I recommend Steven's Advanced Programming in the UNIX Environment (2nd Edition). All of these are just recommendations, however. You should feel free to use any book of your choosing.
If you are using C++, you need to be familiar with POSIX threads programming (pthreads). I will cover this some in class, but some prior experience will be helpful. I recommend Butenhof's Programming with POSIX Threads.
Lecture slides will be available via the course web page. Lecture slides are not a substitute for class attendance, since (i) they will not be complete and (ii) significant parts of lectures may not come from the class notes. Also, I sometimes take exam questions from questions asked by myself or others during class.
Class participation during lectures is highly encouraged, and will affect your grade. If you don't understand something, please interrupt, since it's likely that others also don't understand. The more effort you make to understand the material during lecture, the less you will need to study for the exams.
There is no required textbook for this course, however, I will draw on material and slides from two books: Distributed Systems: Principles and Paradigms by Andrew Tanenbaum and Maarten van Steen, and Distributed Systems: Concepts and Design by George Coulouris, Jean Dollimore, and Tim Kindberg.
I would recommend that you purchase the above two books.
I will also draw on material about web services, from books that are yet to be determined.
| 15% | Exam I: Exact date to be announced later (approximately 1/3 of the way through the semester) |
| 15% | Exam II: Exact date to be announced later (approximately 2/3 of the way through the semester) |
| 15% | Exam III: Exact date to be announced later |
| 25% | Programming Project 1: (Tentative) Implement remote method invocation. |
| 25% | Programming Project 2: (Tentative) Implement a topic-based, publish-subscribe system. Groups will probably be allowed for this. |
| 5% | Class attendance, participation, and discussion |
Grading will be scaled (on a curve), so the absolute score is not significant. All requests for changes of grades must be made in writing, not in person, and you must wait 24 hours after receiving the grade before requesting a change. Resubmit your homework or exam to me, along with a written statement describing why you feel you deserve more points, and I will consider your case.
In lieu of the last exam and the projects, you may work on a research project. You will need to write a 12-page paper, and also give a presentation.
This course is not about teaching programming, so generally speaking, I will not “grade” your source code. That said, well-written code is easier for you to debug, and if your code doesn't work, it will be easier for me to give you partial credit if I can understand it.
Class participation makes up some portion of your grade. This participation can take the form of questions in class, or discussion at office hours or through e-mail. It can also be in the form of answering people's questions on the mailing list.
Some of you will be asking me later for recommendation letters, or to support you as a TA. For me to be able to write a strong recommendations, you will need to interact with me and participate in class.
Without something more, the only thing I can say is that you did or did not show up in class, and list your grade. That will not be a very strong recommendation, even if you receive an A in the class.
You are free to discuss assignments in general terms with one another. However, each of you must write your own code; please do not show your work directly to other students, and do not look at other students' code. Students submitting programming assignments or exams that I decide are too similar, will receive no credit on that assignment, and the maximum grade those students can receive for the class is a C. If necessary, I will be using source code comparison programs to check programs against one another.
My door is usually open if I'm in. If so, please come in or knock. If my door is closed, I'm either not in, or on the phone or otherwise engaged. Please don't knock, unless you have an urgent matter or a prior appointment.
If you wish to come to office hours, please inform me one day in advance. Otherwise, I will not necessarily be present. If you find this policy inconvenient, let me know. If you have made an appointment, a reminder the day before would be helpful.
If you verbally arrange a meeting with me or ask me to do something, please follow up with an e-mail so that I will have a written record. Otherwise, it is almost guaranteed that I will forget.
I discourage phone calls, unless we have arranged them in advance. E-mail almost always works better.
Also, do not leave voice mail. Since my phone does not have a visible indication that I have voice mail, sometimes several days pass before I realize that I have voice mail.
There are two mailing lists for this course. The first list, cs654@cs.binghamton.edu is an open, public list. Subscribe at http://www.cs.binghamton.edu/mailman/listinfo/cs654/. It will be used by me for announcements, and may be used by students for questions and discussion. The subject of announcements with be prefixed with “ANNOUNCEMENT:”. This list should be read carefully, and will often contain hints and tips for the programming assignments. The second list, cs654-internal@cs.binghamton.edu, is read only by me, and may be used for administrative issues. You are encouraged to use the public list for questions of a general nature.
Please use the e-mail lists rather than sending questions directly to me. The lists automatically archive e-mails, for future reference. I can then go back to these e-mails later to improve the course.
I may sometimes lose track of what e-mail I've responded to, so don't hesitate to remind me if I seem to have forgotten about your e-mail or request. I never ignore e-mail on purpose.
| Topic | |||
|---|---|---|---|
| Date | Documents | Slides | Notes |
|
Introduction | |||
| August 28th, 2006 | Chapter 1 (Tanenbaum) [PDF] | Introduction 1 [PPT] | |
| September 6th, 2006 | Introduction 2 [PPT] | ||
| September 11th, 2006 | Introduction 3 [PPT] | ||
|
Communications | |||
| September 18th, 2006 | Chapter 2 (Tanenbaum) [PDF] | Communications 1 [PPT] | |
| September 20th, 2006 | Communications 2 [PPT] | ||
| September 25th, 2006 | Communications 3 [PPT] | ||
| October 4th, 2006 | Communications 4 [PPT] | ||
|
Processes and Agents | |||
| October 9th, 2006 |
Chapter 3 (Tanenbaum)
[PDF] Code samples [Source] | Processes 1 [PPT] | |
| October 11th, 2006 | Processes 2 and Naming 1 [PPT] | Includes end of Processes and beginning of Naming. | |
|
Naming | |||
| October 19th, 2006 (Makeup lecture) |
Chapter 4 (Tanenbaum)
[PDF] | [PPT] | Naming actually begins in previous lecture. |
| October 23rd, 2006 | [PPT] | ||
| October 25th, 2006 |
Lang, Garbage Collecting the World,
[PDF] | [PPT] | Naming actually begins in previous lecture. |
|
Synchronization | |||
|
Chapter 5 (Tanenbaum)
[PDF] | [PPT] | ||
| [PPT] | |||
| [PPT] | |||
| [PPT] | |||
| [PPT] | |||
| [PPT] | |||
| [PPT] | |||
| [PPT] | |||
| [PPT] | |||