Prerequisites: CS 302

Syllabus

CS 474: P2P Systems

Spring 2008

Meeting Times

Lecture and Practice: 9:00 - 9:50 MTuWF, HB 106, 207

Instructor

Dr. Razvan Andonie, HB 219-B, Office hours

TA

Michael Wilson, wilson.michael.c@gmail.com

Text

Ian J. Taylor: From P2P to Web Services and Grids: Peers in a Client/Server World Springer, 2004.

 

Objectives

The course gives a broad overview of current techniques used within distributed systems.  It has a strong focus on real-world examples that exist today, so if you’ve ever used KaZaA, Morpheus, Limewire, Gnutella, BitTorrent, Skype, or Napster, then this is your chance to find out how they work!  There are examples of P2P applications including : Napster, SETI@Home, ICQ, Gnutella, Freenet and JXTA; distributed object systems, e.g. Jini; document oriented computing, e.g. web services; grid computing e.g. Globus Toolkit and OGSA/WSRF; VoIP, e.g. Skype; and P2P TV, e.g. Joost; distributed agents, e.g. JADE.

 

The Lab is based on Java TCP/IP Sockets and JXTA for Java. JXTA technology is a set of open protocols that allow any connected device on the network ranging from cell phones and wireless PDA's to PC's and servers to communicate and collaborate in a P2P manner.  JXTA peers create a virtual network where any peer can interact with other peers and resources directly even when some of the peers and resources are behind firewalls and NAT's or are on different network transports.

Topics

Categories of distributed systems and P2P systems

Java Network Programming

Gnutella, Freenet, Napster, BitTorrent, P2P games

RMI, Jini, JXTA

Web services, XML, SOAP, WSDL, and UDDI

Security in P2P systems

Real world P2P applications

Grid computing

Trust and reputation

Virtual communities

Skype and P2P TV

The copyright issue in P2P file sharing

Distributed intelligent agents

Similar Courses

University of Iowa, USA

Universitat Rovira i Virgili, Tarragona, Spain

Harvard University, Cambridge, MA, USA

Cardiff University, U.K.

Technische Universitat Darmstadt, Germany

Student Learning Outcomes

On completion of this course, the student will have:

bullet

An overview of the structure and design of P2P systems.

bullet

Applied this knowledge to problems in a range of application areas.

bullet

Implemented P2P programs in Java using Sockets, JXTA, Jini, or Jade.

Grading

The will be no exams. Grading will be based only on attendance, assignments, in-class presentations, and the Final Project:

10% Class Participation
40% Assignments and Presentations
50% Final Project

Grade Distribution:

 

95 - 100   A

90 - 94     A-

87 - 89     B+

83 - 86     B

80 - 82     B-

77 - 79     C+

73 - 76     C

70 - 72     C-

67 - 69     D+

63 - 66     D

60 - 62     D-

0  - 59      F

Lectures & Projects

The slides for lectures, additional material, and the projects can be found in the shared directory.

Additional Reading 

bullet A. W. Loo: Peer-to-Peer Computing, Springer, 2007. It has some good Java Network Programming examples, which are available on-line.

bullet

R. Flenner et al.: Java P2P Unleashed: With JXTA, Web Services, XML, Jini, JavaSpaces, and J2EE, Sams Publishing, 2003. A good overview of the programming tools for P2P systems.

bullet

R. Steinmetz and K. Wehrle (Eds): Peer-to-Peer Systems and Applications, Springer, 2005. This is not a traditional textbook, but an overview of P2P research area and a compendium for teaching. http://www.peer-to-peer.info/

bullet

R. Subramanian and B. D. Goodman (Eds.): Peer-to-Peer Computing: The Evolution of a Disruptive Technology, Idea Group Publishing, 2005. A compendium filled with practical ideas.

bullet

K. L. Calvert and M. J. Donahoo: TCP/IP Sockets in Java, Morgan Kaufmann, 2008 (2nd Edition). An excellent practical guide.

bullet

Joseph D. Gradecki:  Mastering JXT: A Building Java Peer-to-Peer Applications, Wiley, 2002. It is a practical guide to how to build P2P applications using Java. This is the book I recommend for this class. It is available on-line.

bullet

Brendon J. Wilson: JXTA, New Riders Publishing, 2002. This is a more advanced guide.

bullet

Daniel Brookshier, Darren Govoni, Navaneeth Krishan: JXTA: Java P2P Programming, SAMS Publishing, 2002. An excellent introduction to JXTA.

bullet

Scott Oaks, Bernard Traversat, Li Gong: JXTA in a Nutshell, O’Reilly, 2002. It is more like a handbook.

 

Survey on P2P systems and books providing comprehensive coverage on the P2P technologies are few and far apart. The fact that P2P is still a rapidly evolving field makes the relative lack of such materials even more critical. Also, adequate teaching material for classes and lectures on P2P systems, covering the whole fields is not currently available.

Lab Software

The JXTA.org site includes specifications, implementations, and the infrastructure to jump-start collaboration among peers. The JXTA Tutorial, by Dr. Ian Taylor, is useful. To install and use JXTA for Java SE/EE (JXSE) 2.5 "Turducken", first read the JXSE Progr. Guide, then go to Download. The on-line JavaDoc documentation for the JXTA JXSE API is available at: https://jxta-docs.dev.java.net/jxse-javadoc/current/index.html

Final Projects

Final Project Guidelines

A list of existing JXTA applications can be found at http://www.jxta.org/servlets/ProjectList.

The final project is to be completed in groups of 2-3. It should be submitted as a report and presented in class. The report should contain the problem description, the code, and a discussion. The final project is to be completed in groups of two, or individually. The project should contain the problem description, the code, the benchmarking, and a discussion. For a good presentation, read Quinn's effective presentation techniques guidelines. Each student should be prepared to spend 30-50 hours for the final project.

Grading criteria: 10% Difficulty of the project, 50% Submitted document, 40% Presentation.

NOTE: The projects may be continued: CS496 Individual Study (up to 4 credits).

Current Final Projects

Final Projects From Previous Years

    2006/07

Lukas Magill, Christopher B. Abdul-Wahid, Benjamin Woodard: Dynamic allocation of objects with partial replication over a  P2P network.

Michael Wilson, Sorin Bucse, Shuford Robert: P2P file sharing system.

Luke Arntson, Robb Berry: P2P Tetris game.

Jonathan Thorsvik, Allison Wintrip, Tadashi Kuroishi: A remote Jini disk file storage service.

Course Schedule

Date

Topic

Readings

3/26

Introduction

Syllabus

3/28

Categories of Distributed  Systems

Chapter 1

3/31

Java Network Programming: HTTP,  Sockets

All About Sockets (Sun), Java Sockets (IBM), HTTP-based Applications (Sun),

Java Network Programming Q&A,

Lab Examples & Docs (shared directory)

4/2

P2P Systems

Chapter 2

4/4

JXTA

Chapter 10

4/7

P2P Deployment using JXTA

Chapter 12

4/9

P2P Deployment using JXTA

Chapter 12

4/11

Lab: Experiment with the JXTA Shell. Run the  "Hello world" application  from the JXSE 2.5 Tutorial (shared directory)

Read: https://jxse-shell.dev.java.net/

JXSE Progr. Guide (shared directory)

JXTA GettingStarted (shared directory)

4/14

Web Services

Chapter 3

4/16

Web Services Deployment

Chapter 13

4/18

Jini

Chapter 5

4/21

Distributed Object Deployment Using Jini

Chapter 11

4/23

Gnutella

Chapter 6

4/25

Scalability

Chapter 7

4/28

Security

Chapter 8

4/30

Freenet

Chapter 9

5/2

Grid Computing

Chapter 4

5/5

OGSA

Chapter 14

5/7

Lab: Final Project  

5/9

Building Highly-Dynamic Battlefield Network Infrastructure Using JXTA

Slides by Dr. Bernard Traversat; Boeing presentation

5/12

BitTorrent

 

5/14

Lab: Final Project

 

5/16

P2P TV

 

5/19

Skype

 

5/21

Trust and Reputation

 

5/23

P2P Technology and the Copyright Crossroads

Electronic Frontier Foundation

5/26

Memorial Day

 

5/28

Distributed Intelligent Agents: The  JADE Framework

http://jade.tilab.com

White Paper

5/30

Project Presentations  

Laboratory Schedule

Date

Topic

Item Due

4/1

Setup; Project 1

 

4/8

Project 2

Project 1 due

4/15

Project 3

Project 2 due

4/22

Experiment with JXTA pipe. Run the  Pipe Client/Server application  from the JXSE 2.5 Tutorial (shared directory)

Project 3 due

JXSE Progr. Guide and code  (shared directory)

4/29

Experiment with JXTA socket. Run the  socket application  from the JXSE 2.5 Tutorial (shared directory)

JXSE Progr. Guide and code  (shared directory)

5/6

Final Project

 

5/13

Final Project

 

5/20

Final Project

 

5/27

Final Project

 

Honor Code

All work turned in for credit, including exams and all components of the project, are to be the work of the student whose name is on the exam or project. For all project components, the student can receive assistance from individuals other than the instructor only to ascertain the cause of errors. Thus you can get help if you need it to figure out why something doesn't work. You just can't get help from anyone, other than the instructor or TA, to figure out how to make something work. All solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. The following text should appear on all assignments: " I pledge that I have neither given nor received help from anyone other than the instructor for all program components included here."

Help each other with the lab assignments. You may work together, but do the work on separate computers. The point is to understand the material enough so that you to go on and complete that week's programming assignment on your own.

Help each other understand and debug the programming assignments. However, you should write the code for your programs yourself. Writing it yourself is the only way you will learn. Do not work together to solve the programming assignments to the extent that two programs are essentially the same solution.

All program solutions turned in for credit are to be your individual work and should demonstrate your problem solving skills, not someone else's. Since everyone is writing their own code, no two programs should be the same or so similar that I could convert one to the other by a simple mechanical transformation (e.g. changing variable names and comments). I consider this plagiarism and a violation of academic code. First violation: Students must meet with the instructor. In most cases, the grade will be split between the authors of the copied programs. Second violation: Students will receive no credit for the assignment. An incident letter will be placed on file in the Computer Science Department and the matter referred to the Computer Science Department Chair.

Class Attendance

Class attendance is expected and recorded.

ADA Statement

Students with disabilities who wish to set up academic adjustment in this class should give me a copy of their "Confirmation of Eligibility for Academic Adjustment" from the Disability Support Services Office as soon as possible so we can discuss how the approved adjustment will be implemented in this class. Students without this form should contact the Disability Support Services Office, Buillon 205 or dssrecept@cwu.edu or 963-2171.

Caveat

The schedule and procedures for this course are subject to change. It is the student's responsibility to learn of and adjust to changes.