CS 5204 Course Project


1. Overview

Each student must propose, and have approved, a proposal for a term project on a topic of relevance to the course. There are three types of projects:   a development project, a writing project, or an architecture project. Each project produces an intermediate report , a final report , and a final oral presentation. All development projects must also scheduled a final demonstration to illustrate the execution of their system. All project materials must be submitted in electronic form that clearly identifies the creator(s) and can be handled in a mangeable way. Written and presentation materials must be submitted in PDF format.  Grading is done based on the project's successful accomplishment and on its description through the final report and oral presentation. There are several important dates that are used as milestones in the projects.
 

2. Project Types

2.1 Development Projects

Description

A development project produces a well-designed executing system that solves a specified distributed programming problem. Development projects may be implemented using one of a wide variety of available libraries, frameworks, or systems among which are:

Reading outside of the class will be needed to understand how each system operates and work outside of the class will be required to obtain and install a working version of the system.

Each development project will involve either one student or a team of two students. A team project must be justified on the basis of a larger goal or development effort in comparison with a single student project. For team projects, the two  students on a team will each receive the same grade for the project.  The students may select their own partners and may divide the work in any appropriate way. It is expected that both students will contribute equally to the work and benefit equally from the learning associated with the project. It is considered a violation of the Honor Code for one student to allow another student not to contribute to the project as an equal partner. Problems  with equal participation should be brought to the attention of the instructor at the earliest possible time. Students may assist each other on the installation of the software needed for the project and they may collaborate on achieving a basic understanding of the mechanisms of each system. However, each project's design and code must represent that student(s)' own creative work.

Example Projects

To give some examples of possible development projects, three default projects are briefly described. Students are encouraged to exercise their own creativity in defining a project that meets their technolgy and application interests. These descriptions are not sufficiently detailed to serve as as a project description.

CSP Communication API
This project develops an API that allow processes to interact in a CSP-style messaging semantics. The API should  present to application developer an expressive and convenient set of abstractions and operations that conform to the semantics of message-based communication defined by Hoare's Communicating Sequential Processes (CSP). The specific semantics include named processes, non-deterministic message selection, rendezvous blocking, and termination. This project can be implemented using messaging systems such as JMS or other messaging systems.

Secure Interaction
this project develops a system for the secure interaction of users with a shared community resource. Useers are allowed to create and trade "privileges" defining their rights to access services on the shared community resource. The "priviliges" must be crytographically signed to prevent unauthorized creation of rights. Requests to the community resource must be accompanied by a set of "privileges" that provide sufficient authorization to perform the service. For example, a particular service may require a "compute" right from a given authorized source, a "storage" right from a different authorized source, and an "access" right for the service from yet a different authorized source. Standard cryptographic methods must be used create and validate privileges. Critical issues to be resolved include how prvilieges are represented, how authorized sources are defined, and how privileges presented with a request are validated.

P2P File System
The system consists of an arbitrary (at least three) number of peers that interact to form a virtual shared file system. Each file is stored on one or more of the client machines. A peer-to-peer (P2P) protocol is used to create the impression of an integrated file system in which any client can access any file. Files may be replicated for reliability and performance purposes. Mechanisms must be implemented to guarantee some form of access control for protection and some form of concurrency control to deal with concurrent updates to the same file by different clients. This system could be implemented using a P2P framework such as JXTA, or a combination of tuple spaces and remote invocation.

Proposal

Before beginning a development project, a project proposal must be submitted for approval by the instructor. The proposal must give the name(s) of the student(s), the underlying distributed technology or system that will be used, a short (one page) description of the system to be implemented, and a brief explanation of the relevance of this system to important topics in operating systems.

2.2 Writing Projects

Description

A writing project produces a 10 page technical paper based on the contents of two papers published in the technical literature on a subject related to the course.   Page limits are strictly enforced on writing projects. Papers will be downgraded for using overly small font or other formatting devices to avoid the effect of the page limit. Figures, tables, and graphs must be used as appropriate.The paper should be written in a style and format as if it were being submitted to a technical journal for review. This means that it must contain a title, abstract, standard sections, and reference list. Writing projects will be graded both on the technical content of the written paper as well as on the quality of the writing and presentation.

Proposal

Before beginning this form of project, students must submit a project proposal for approval by the instructor. The proposal must give a complete bibliographic entry for each of  the two papers  and describe the relevance of these papers to a topic in the course.
 

2.3 Architecture Projects

Description

An architecture project studies and documents in a 10 page paper the detailed structure and operation of a working system. The overall goal of this project is to promote learning about concepts in operating systems by studying first-hand an artifact developed by professionals in the field. The source code of the system must be available via an open source form or a publicly available download. The intention of the project is not to read documents or tutorials about the system's design and implementation. Rather, the intention is to study directly the source code of the system and its immediate documentation (e.g., the Javadoc level of documentation for a Java-based system). From this study, the design of the system is understood and documented using written text and common diagramatic forms (e.g., UML diagrams).

Proposal

The proposal should identify the system to be studied, the site from which the source code is available, the overall nature of the system, and the specific aspect of the system to be examined.

3. Deliverables

Each project will result in an intermediate report, a final report due on the last day of class, and presentation that is made at a time to be scheduled.

3.1 Intermediate Report

Development Projects: The intermediate report for development projects must contain a design diagram showing the essential components in the system and a 2 page overview. The overview must state the objective of the system, identify the underlying technologies used in the project, explain the design diagram, state the progress achieved to date, and define a timeline for further work.  The written materials prepared by the developer(s) must be submitted on the due date for the intermediate report. The submitted materials must give the name(s) of the development team member(s) on the reviewer on the first page.

Writing Projects: A preliminary draft of the paper must be submitted on the due date for the intermediate report. Sections not yet written must be indicated by appropriate section titles. Preliminary thoughts and ideas can be presented in outline/bullet form to indicate the planned contents of section yet to be completed.  The submitted draft paper must give the names of the student doing the writing project and a tentative title for the paper. The reference list should identify in proper citation form the main papers involved in the project..

Architecture Projects: A draft architecture description must be submitted on the due date for the intermediate report.   A summary should be given of steps taken to date to analyze the system being studied. The architectural elements understood thus far should be briefly described. Design diagrams and other figures should be included as appropriate in the draft description. A timeline for future action should also be given.
 

3.2 Final Report

A final written report is required for all projects. The final reports must be submitted in electronic form in PDF format; source formats (e.g., a Word file or a Latex file) are not acceptable.

Development Projects: Students doing development projects must arrange a time to conduct a live demonstration for the instructor or adjunct to exhibit the required functionality of the system. Also submitted at the demonstration is a final system's design in a graphical diagram using a standard design notation (e.g., the Unified Modelling Language) and a report highlighting the significant aspects of the project.

The final report should follow this outline:

  1. title/author/abstract - approximately 1/2 page. The abstract should indicate the purpose of the distributed system (e.g., remote execution of a sequence of computations, sorting, matrix multiplication), any standard algorithms that are used (e.g., two phase commit),  and the technologies employed in building the system (e.g., RMI). The abstract should also indicate your learning objective in building this system (e.g., become more familiar with Java RMI, develop deeper understanding of commit protocols).
  2.  
  3. project description - 4 pages that includes one or more diagrams illustrating the structure of the distributed system and the corresponding narrative text. This description should allow a knowledgeable reader to understand the overall architecture of the distributed system.
  4.  
  5. summary - approximately 1/2 page indicating what you learned from this project and what extensions or variations of this project might be possible.
Writing Projects: The final version of the paper serves as the final report for writing projects.

Architecture Projects:  The final version of the documentation serves as the final report for architecture projects.
 

3.3 Final Oral Presentation

An twenty (20) minute oral presentation is also required for all projects. The time limit will be strictly enforced. The oral presentation should focus on the essential issues involved in the project. Slides and other materials should be prepared in a professional manner. If the development project involved two member both team members on a development project should participate in the oral presentation. The presentation of a development project should describe the architecture of the system developed for the project, describe the technology used in its construction, identify the key operating system issues exhibited by this system, and describe the key aspects of the system's operation. The presentation of a writing project should focus on the key concepts involved in the papers on which the project is based, provide a distilled summary of the papers, and identify the essential contributions of the paper. The presentation of an architecture project should describe the key design structures of the system, their relationships, and the essential or critical operations performed by the system. Design diagrams and other illustrations should be use appropriately.

3.4 Demonstration

For development projects only, a final demonstration of the developed system must be conducted. These demonstrations will be conducted after the last class meeting on a schedule to be determined. The demonstrations will be conducted on site by the course adjunct. The purpose of the demonstration is to show the functionality of the developed system. Developers also must be prepared to show and review the design and implementation of the system. The demonstration will be evaluated by the extent to which the functionality described in the approved proposal is observed to be present in the developed system. Loss of credit will result for missing or partially working functions, unusual or undesireable systems behavior, or clear deficiencies in implementation strategies or design principles.
 

4. Grading

Credit is given as follows:
 
 
Feature 
Points
Intermediate report
10
Technical merit of completed project
60
Final Presentation
15
Final Report
15


Extra credit may be given for exceptional work that represents the highest level of creative activity.
 

5. Dates

The dates assigned as project milestones are given in the following table.
 
 
Date
Milestone
  September 22
  term project proposals due
  September 27   term project proposal approved
  November 8
  intermediate reports due
  December 6
  final report due
  December 7-14
  project presentations and demonstrations (as scheduled)