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.)
Recommended
background: CS
3013, CS
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 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 code relevant to file systems and part of or even all of a distributed system. The implementation can be done in a variety of environments and languages, with at least one significant program in C++. 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 has 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 do not just follow along - research has shown that students who are "active" and take notes during class retain more information, even if they do not 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 for 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 "multi-tasking" state of mind 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 and an official report. 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 Chapter 4, particularly Sections 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.
[FZRL08] I. Foster, Y. Zhao, I. Raicu, and S. Lu, Cloud Computing and Grid Computing 360-Degree Compared, in Proceedings of Grid Computing Environments Workshop (GCE), pages 1-10, Austin, TX, USA, November 2008
[CCL14] W. Cai, M. Chen, and V. Leung. Toward Gaming as a Service, IEEE Internet Computer, 2014.
[BT01] P. Bettner and M. Terrano. 1500 Archers on a 28.8: Network Programming in Age of Empires and Beyond, Gamasutra, March 22, 2001.
[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.
[CFGS14] M. Claypool, D. Finkel, A. Grant and M. Solano. On the Performance of OnLive Thin Client Games, Springer Multimedia Systems Journal (MMSJ) - Special Issue on Network Systems Support for Games, DOI 10.1007/s00530-014-0362-4, pages 1-14, February 2014.
[Ber01] Y. Bernier. Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization, In Proceedings of the Game Developers Conference, Feb. 2001.
Slides from the books, papers, and select other materials will be available shortly before or after they are presented.
Admin | pptx | |
File Systems | pptx | |
[HLM02] | pptx | |
Sockets | pptx | |
Distributed File Systems | pptx | |
Distributed Systems Overview | pptx | |
Game Synchronization Notes | - | |
Network Games | pptx | |
Peer-to-Peer | pptx | |
Last Class | pptx | |
Review | pptx |
Projects and due-dates will be placed here as they are defined. Here is what we have so far:
Project 1: Dumpster Diving, (Jan 24) (slides) (grading guide)
Project 2: Distributed Shell, (Feb 02) (slides) (grading guide)
Project 3: Nutella, (Feb 14) (slides) (grading guide)
Project 4: Dragonfly Wings, (Feb 28) (slides) (grading guide)
Project BS/MS: Cloud Saucer Shoot, (Mar 02)
This section has any samples discussed in class, exam preparation material, tutorials or any other demonstration-type class materials.
For development questions, consider the cs4513 question-answer forum. Both the professor and TA will look to answer all questions there, but students can also answer each other's questions. You may even find your question has been answered already!
The utility sysbench
provides benchmarking for
Linux, testing CPU, memory, File I/O and (when compiled in) SQL.
See also
How
to Benchmark Your System with Sysbench.
A tutorial on the use of sockets can be found in Beej's Guide to Network Programming.
Exam materials:
We will read some research papers for this class. This is a good (short) paper on how to read a paper:
[Kes07] S. Keshav. "How to Read a Paper", ACM SIGCOMM Computer Communication Review, Volume 37, Issue 3, Pages 83-84, July 2007. (Updated version here)