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 may be expected to design and implement programs that emphasize the concepts of file systems and distributed computing systems using current tools and languages. (Undergraduate credit may not be earned both for this course and for CS 502.)
3516, and system programming experience.
You should already own a textbook from your Operating System course. You will need this for material on file systems. E.g., Andrew S. Tanenbaum, Modern Operating Systems, 3rd edition, Prentice Hall, 2008. Other Operating Systems books (e.g., recent books by Silberschatz) may be suitable.
Here is the list of potential topics covered in this course (not necessarily in order of appearance):
This course may be taken for graduate credit by students in the BS/MS CS program. Written permission from the professor is required, obtained via the Computer Science BS/MS Course Selection & Approval form. In order to receive graduate credit, students who have signed up for this program need to perform at an "B" level or better on all projects and the exams. In addition to the above, admitted BS/MS students may request additional graduate credit by registering for 1/6 ISP, via the Registrar's Undergraduate Independent Study (ISP) Registration form, and completing a significant programming project (up to 50 hours of additional work). Such a request, and all paperwork, needs to be done within the first week of class.
Final grades will be computed as follows:
There will be programming projects done to implement part of or even all of a distributed system. The implementation can be done in a variety of environments and languages. Programming will not be taught as part of this course. System calls and other aspects of Unix will be introduced as needed and as the course progresses. The grading policy for each project will be provided at the time of the assignment. In general, each project a basic objective for the majority of the assignment points. There may be an extended objective for demonstrating additional work and understanding. Projects, including all data and source code, as appropriate, will be turned in online as specified in the writeups.
There will be two in-class exams. The first is roughly mid-way through the term and the second on the last day of the term. 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.
Final grades will reflect the extent to which a student has 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 projects, homework and exams have been met. A grade of an "A" will indicate significant achievement beyond the basic objectives. A grade of a "C" will indicate not all basic objectives were met, but work was satisfactory for credit. No incomplete grades will be assigned unless there are exceptional, extenuating circumstances. Similarly, no makeup exams will be given unless there are exceptional, extenuating circumstances.
Exams are done, and due, in class. Projects are due online at 11:59pm on the due date, unless otherwise noted. Late projects will be accepted with a 10% penalty of the total assignment value for each day (24 hours) late, with the weekend counting as one day. Projects will not be accepted more than one week beyond the due date.
This course is intended for serious students. Participants will be expected to adhere to all rules of professional behavior. It is to be emphasized that knowledge of material and professional behavior are tied together; failure in one of them negates any excellence in the other.
You may use your own computer during the lectures, but don't just follow along - recent research has shown that students who are "active" and take notes during class retain more information, even if they don't use those notes later. Take notes! Do this on paper or with the computer. So, laptop use in class is acceptable as long as it is restricted to note taking, or a limited amount of information seeking. Any other activity distracts you or the people around you, preventing thoughtful participation in the class.
Also, those who multi-task (e.g., with laptops or cell phones during class) actually learn less. In fact, those who believe that they are expert multi-taskers, often do the worst! Productivity can be reduced by as much as 40 percent when switching tasks. The state has been labelled continuous partial attention. During class, try to limit multi-tasking with any device you have - stay with the task on hand of paying attention to the lecture.
All work is expected to be done individually. As such, students are encouraged to discuss their work with each other, but are also expected to do the work by themselves.
Any breach of professional ethics as evidenced, for example, by copying exams or code for the projects, downloading code from the Internet, cooperating more than just by discussions in study groups, misusing computer resources, or using outside help of any kind, will be considered adequate reason for an NR in the course and a report to the Dean of Students. Refer to the official WPI statements on Academic Honesty for details. Remember this warning - any breach of ethics will earn you an NR. When in doubt, ask!
The list of reading will be posted here, roughly in the order covered in class.
Chapters on File Systems, appropriate for your OS text.For Tanenbaum 3rd edition, this would be Section 4, particularly chapters 4.1-4.4.
[HLM02] D. Hitz, J. Lau, and M. Malcolm. File System Design for an NFS File Server Appliance, Technical Report TR3002, NetApp, 2002. (slides: pptx, pdf)
[RG10] A. Rajgarhia and A. Gehani. Performance and Extension of User Space File Systems, in Proceedings of the ACM Symposium on Applied Computing (SAC), Pages 206-213, Sierre, Switzerland, 2010. (slides: pptx, pdf)
[SKH02] J. Smed, T. Kaukoranta and H. Hakonen. Aspects of Networking in Multiplayer Computer Games, The Electronic Library, Volume 20, Number 2, Pages 87-97, 2002. (slides: pptx, pdf)
[Cla09] Mark Claypool. Motion and Scene Complexity for Streaming Video Games, In Proceedings of the 4th ACM International Conference on the Foundations of Digital Games (FDG), Florida, USA, April 2009.
[CFGS14] Mark Claypool, David Finkel, Alexander Grant and Michael Solano. On the Performance of OnLive Thin Client Games, Springer Multimedia Systems Journal (MMSJ) - Special Issue on Network Systems Support for Games, February 2014.
[CC10] M. Claypool and K. Claypool. Latency Can Kill: Precision and Deadline in Online Games, In Proceedings of the First ACM Multimedia Systems Conference (MMSys), Scottsdale, AZ, USA, February 2010. (slides: pptx, pdf)
[KR10] James F. Kurose and Keith W. Ross, Computer Networking - A Top-Down Approach (5th ed), Pearson, copyright 2010. (Chapter 2.2.4 - Web "cookies")
[SAAF08] F. Schneider, S. Agarwal, T. Alpcan, and A. Feldmann. The New Web: Characterizing AJAX Traffic, In Proceedings of the Passive and Active Measurement Conference (PAM), Cleveland, OH, USA, 2008.
Slides from the books, papers, and select other materials will be available shortly before or after they are presented.
|Distributed File Systems||pptx|
|Overview of Distributed Systems||pptx|
|Games in the Cloud||pptx|
Projects and due-dates will be placed here as they are defined. Here is what we have so far:
Project BS/MS: Cloud Saucer Shoot, (May 02)
This section has any samples discussed in class, exam preparation material, tutorials or any other demonstration-type class materials.
A tutorial on the use of sockets can be found in Beej's Guide to Network Programming.