This course extends the study of the design and implementation of operating systems begun in CS 3013 to distributed and advanced computer systems. Topics include principles and theories of resource allocation, file systems, protection schemes, and performance evaluation as they relate to distributed and advanced computer systems. Students are expected to design and implement programs that emphasize the concepts of file systems and distributed computing systems using current tools and languages. The intended audience is computer science and computer engineering majors. The required background is CS 3013, and a knowledge of probability (such as provided by MA 3613), a working knowledge of C and a strong programming background; and an interest in learning about distributed computer systems.
Good Reference Textbooks:
Final grades will be computed as follows:
Final grades will reflect the extent to which you have demonstrated understanding of the material, and completed the assigned projects. The base level grade will be a "B" which indicates that the basic objectives on assignments and exams have been met. A grade of "A" will indicate significant achievement beyond the basic objectives and a grade of "C" will indicate not all basic objectives were met, but work was satisfactory for credit. No incomplete grades will be assigned unless there exist exceptional, extenuating circumstances. Similarly, no makeup exams will be given unless there exist exceptional, extenuating circumstances.
There will be two in-class exams. The first is roughly mid-way through the term and the second is during the last week. There is a remote possibility of a pop quiz for which no advance notice will be provided. Exams will be closed book and closed notes, unless otherwise indicated. The majority of each exam will cover basic ideas and objectives of the class with a few questions testing additional understanding and insight.
Late assignments will be be penalized 10% of total assignment value per day (with the weekend counting as one day) or partial day, and no assignments will be accepted after seven days beyond the due date. All assignments are due as indicated when handed out. Exceptions to these rules can be made only beforehand.
Here is the list of topics covered in this course:
You should check out the assignment timeline to help you plan for doing projects and exams.
Slides from the in-class lectures will be available shortly after they are presented, depending upon how things go. Here is what we have so far:
|Distributed File Systems||-||-||html|
[MJV96] S. McCanne, V. Jacobsen and M. Vetterli. Receiver-driven Layered Multicast, In Proceedings of ACM SIGCOMM Conference, Stanford, California, USA, 1996. (slides: ppt, pdf)
[FCFW02] Wu-chang Feng, Francis Chang, Wu-chi Feng, Jonathan Walpole. Provisioning On-line Games: A Traffic Analysis of a Busy Counter-Strike Server, In Proceedings of the ACM SIGCOMM Internet Measurement Workshop (IMW), Marseille, France, November 6-8, 2002. (slides: ppt, pdf)
There are 3 projects. The projects are the programming assignments you will have for the course. You must work individually for the projects. For some of the projects, you will be using the Fossil Lab, which has only 30 machines. You will be assigned a machine to use for the projects, although you can use alternate machines (when they are free) for browsing, etc. Note that each user will have priority on his/her machine, even if someone else is using it. Please see the Fossil Web page for more information.
You will need to turn in your assignments on-line using turnin.
Projects and due-dates will be placed here as they are defined. Here is what we have so far:
Project 0: Linux Dabbling and the WPI File System, (Not due)
Project 1: Dumpster Diving, (Nov 4)
Project 2: Distributed File System, (Nov 21)
Project 3: T-Strike, (Dec 12)
In this section are any code samples discussed in class, practice exams or any other demonstration-type class materials.
Exam One Stuff:
Exam Two Stuff:
Exam Three Stuff:
Distributed communication (SunRPC and JavaRMI) examples:
tar xvfto extract)
Some basic Unix samples:
get-opt.c- help in parsing command line arguements.
stat.c- getting file status.
If you don't know about it already, you should check out Snapshots that we have here at WPI. For cs4513 fun, check out the Technical Report on how they work.
Some information on file systems:
firstname.lastname@example.org, December 2001. (The note refers to a more detailed technical paper you may want to read).
The mini-HOWTO on how to undelete ext2 files.
From the minds of professors Claypool, Finkel and Wills comes the Free/Open Source Laboratory (aka the "Fossil lab"). The Fossil lab is funded under an NSF grant designed for laboratory use in the cs3013 (Operating Systems) and cs4513 (Distributed Computer Systems) courses. The lab includes 30 PC's running Linux on a dedicated network and a server running Linux for use as a router and firewall. Students using the Fossil lab have the opportunity to run experiments on a dedicated machine, do some kernel "hacking" and gain valuable system administration experience that is not possible in current CS laboratory environments.
Linux is a completely free Unix operating system. Linux runs primarily on 386/486/Pentium PC's, but has been ported to various other architectures. If you like Unix, want to learn more about system administration and have access to a PC, I recommend checking it out. Read a short info sheet or a more detailed info sheet for more information. You might also want to check out The Cathedral or the Bazaar, an interesting look at open source software development, such as Linux.
You might also try the Linux Source Navigator, a CGI interface to browse the entire Linux kernel source. The Navigator formats the raw source tree on-the-fly, using italics, bolds, colors and hyperlinks to present the source in a much more manageable format. Right now, there's just a 2.0.0 kernel set up to use i386 architecture, but more versions may be there shortly.
A weekly column by Robert X. Cringely that provides a humorous but
profound look at the world of Information Technology.
"What makes Cringely such an interesting writer is the way he combines a solid understanding of technology, the ability to explain it simply, and an irreverence for those who, at the highest levels, hawk it" IEEE Spectrum, May 1997.
Nachos is a simulated environment for operating system programming. Although simulated, startup in the Nachos environment can be considerable. Still, keen students may like to look further into the Nachos software.