Course Overview

Course Description: The purpose of this course is to explore the design, implementation, and analysis of Peer-to-Peer (P2P) systems. Topics we will cover include fundamental concepts of distributed systems; first- and second-generation P2P systesm; location services; overlay and overlay multicast networks; reliable, distributed storage in P2P networks; security; data management; measurement and evaluation methodologies; and deployment and evaluation infrastructures for P2P systems.

Course Format: This course is primarily paper-driven. We will read and discuss two papers per day for a total of approximately 60 papers. Students will pair up to present each paper. Each student must sign up for two papers to present, preferably on different days.

Course Prerequisites: CS 122 (undergraduate networking) and  CS 162 (undergraduate operating systems). We will assume that you either know the material that is supposed to be covered in those courses, or that you are willing to learn the material as necessary. We will not spend time in lecture covering any of this material.

Enrollment: Priority will be given to graduate students, followed by senior undergraduates, junior undergraduates, etc.

Grading: Grades will be determined roughly as follows: (Note that the final grade components may change!)

Projects: The project in this course is team-based and open-ended. You may do a project based on your research or use one of the topics that we suggest (project page to be posted). Projects should be done in groups of 2-4 people and must have a strong P2P component.