Office Hour: Wed 10-11
600.318/418 and 600.344/444
Peer-to-peer Internet applications have recently been popularized through file sharing applications like Napster, Gnutella and FreeNet. While much of the attention has been focused on the copyright issues raised by these particular applications, peer-to-peer systems have many interesting technical aspects like decentralized control, self organization, adaptation and scalability.
In this course we are going to cover several papers covering the evolution and some of the techical issues around building peer-to-peer (P2P) network systems. We are going to start by looking at the original P2P application, Napster, and some of its later offsprings such as Gnutella, Freenet and FastTrack. We are going to discuss the scaling limitations of these systems and see how some recently proposed systems (Chord, CAN, Pastry) propose to address these limitations. While these second-generation systems are scalable in terms of the amount of routing state required in each P2P node, they offer only a single primitive, that is given a key the ability to quickly locate a node that stores that key. Next, we are going to cover some applications built on top of this primitive, spanning from distributed file systems to event notification systems. We are going to close the course by exploring some of the shortcomings of this second generation P2P systems and some of the open problems surrounding P2P systems. Finally we are going to briefly cover some the alternative designs in this system space (i.e. network overlays) and discuss the implications of P2P systems on the larger Internet.
The strength of the university depends on academic and personal integrity. In this course, you must be honest and truthful. Ethical violations include cheating on exams, plagiarism, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition.
Academic honesty is required in all work you submit to be graded. Except where the instructor specifies group work, you must solve all homework and programming assignments without the help of others. For example, you must not look at any other solutions (including program code) to your homework problems or similar problems. However, you may discuss assignment specifications with others to be sure you understand what is required by the assignment. Falsifying program output or results is prohibited. Report any violations you witness to the instructor. See the University integrity code and regulations at http://www.cs.jhu.edu/integrity.html