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.
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:
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.
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.
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.
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.
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:
Architecture Projects: The final version of the
documentation serves as the final report for architecture projects.
|
|
Intermediate report |
10 |
Technical merit of completed project |
|
Final Presentation |
|
Final Report |
|
Extra credit may be given for exceptional work that represents the
highest level of creative activity.
|
|
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) |