IT-Universitetet i København
 
  Tilbage Kursusoversigt
Kursusbeskrivelse
Kursusnavn (dansk):Peer-to-peer lagersystemer 
Kursusnavn (engelsk):Peer-to-Peer Storage Systems 
Semester:Forår 2004 
Udbydes under:cand.it., internet- og softwareteknologi (int) 
Omfang i ECTS:7,50 
Kursussprog:Engelsk 
Kursushjemmeside:https://learnit.itu.dk 
Min. antal deltagere:
Forventet antal deltagere:40 
Maks. antal deltagere:100 
Formelle forudsætninger:Before the course the student should be able to

  • Describe the fundamental principles and models
    used in designing and constructing distributed
    systems (in particular, the client/server
    model).

  • Design, implement and test medium-sized
    programs in Java including programs using
    inheritance, packages, and external
    libraries.




Experience with systems programming is
advantageous, but not a must.




One way to obtain these prerequisites is by
taking the courses Distributed Systems
and Object Oriented Programming,
and possibly also a follow-up course or project involving programming.

 
Læringsmål:


The purpose of this course is to study fundamental
aspects of peer-to-peer storage systems, and
the problems related to the design and implementation of such systems.



An important goal is to read research
papers on the subject, to allow the students to
get a feel for the ongoing research in the area.

After the
course the student should be able to



  • read research papers in the subject area;

  • describe the difference between classical
    client/server models and peer-to-peer
    systems;

  • describe the major variants of peer-to-peer
    routing algorithms;

  • describe the major file sharing and storage
    systems implemented using the routing
    algorithms;

  • understand in general terms how to realize
    a peer-to-peer storage system;

  • implement smaller parts of a
    peer-to-peer system.

 
Fagligt indhold:

A peer-to-peer system is composed of a number
of peers working together to achieve a goal. Each
peer will act both a server, when contacted by
other peers, and as a client, when contacting
other peers.



The peers are organized in a logical
(or virtual) network, often called an overlay
network
on top of an underlying network
(the Internet, for example). The logical links between peers are
realized using one or more links of the underlying
network.

The process of locating a peer, and finding
the peer responsible for a given piece of
data (or work, in the general case), is called
routing. A major part of the course will be
concerned with routing.



On top of the routing infrastructure one
can implement systems for file sharing, distributed file systems, instant
messengers, etc. In the course we will focus
on the storage of data/data management
applications of the routing infrastructure.



During our discussion of data storage we
will be particularly interested in how
peer-to-peer systems handles traditional issues
in distributed systems such as availability,
scalability, fault tolerance, performance, etc.



For the most part we will look at how
concrete systems addresses these issues:



  • file sharing systems (Napster, Gnutella,
    FastTrack, etc);

  • unstructured versus structured routing
    (fx: Gnutella flooding, FreeNet backtracking,
    Chord, Tapstry, Pastry, and Kademila
    content-based hashes)

  • distributed file system (fx: CFS, OceanStore,
    PAST);

  • group communication (fx: SCRIBE);

  • other applications (fx: XML Store).


This is not the outline of the
course schedule!



The focus will be more on systems
(design, implementation, etc) aspects of peer-to-peer storage systems, than on algorithmic aspects. Of course,
we wont completely disregard the various algorithmic properties of the systems.



Note that important subjects such as
integrity, trust, anonymity, etc will only
be treated superficially (unless time and student\'s
interests dictate otherwise).

 
Læringsaktiviteter:


The course will consist in reading research
papers on the subject of peer-to-peer storage
systems. Weekly exercises will be given to
support the understanding of the subject.
There will be one larger, mandatory programming
exercise during the course.




Depending on the number of students enrolled in
the course it will either be run as (1) lectures
and exercises with one larger programming exercise,
or as (2) a seminar, where the students will be
asked to present a paper in class, with exercises
(in this case without the larger programming
exercise).

 
Eksamensform og -beskrivelse:X. experimental examination form (7-scale; external exam), 13-skala, Ekstern censur

Oral exam, graded by the Danish 13-scale, external censor. Approval of the mandatory programming project is a prerequisite for participating in the exam. The grade will not however depend on the project. All usual aids, except computers, are allowed at the exam.  

Litteratur udover forskningsartikler:


The reading material for the course will be
research papers on the subject of peer-to-peer
systems (routing algorithms, protocol specifications,
storage systems, etc).



The exact selection of papers has yet to be
determined. If the number of students enrolled
permits it, it will be possible for the students,
in a limited fashion, to particiapte in the
selection of papers.