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.
|
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. |