CS-179: Project in Computer Science

Computer Networks

Michalis Faloutsos

Time:Thursday 11:10pm-12:00pm
Place: SPR 2343 
 Office hours: Tuesday 3-4
                      Thursday 5-6   (preferably warn me by email before you come)


TA: Yihua Ye:   
   can be reached at yhe at cs.ucr.edu
Office hours: WE: 3:00-4:00
                       Appointments by request

NEW:Timetable and grading

New
Group Formation: Please form groups on your own at first. I reserve the right to shuffle group members
as happens in real life.

For grade dissemination, we will use the blackboard : Make sure you insert your email
in your profile, since I may use it to contact you.
Also, make sure you check the announcements.

Here is the project specification as described in class.


For next class, make sure you read the introduction to file sharing systems (white paper) below.

Our mailist list is cs179i (see lists off the main page of the department). MAKE SURE you check up the list frequently or subscribe and check your email recently. I would like you to check the list or email at least once a day.

The overview of the class

It assumes and requires 164 (Networks).
The class is a complete engineering project: desing, implementation, texting evaluation.
Teams of 2 or 3 people will be required.

The project is the development of a large scale distributed file sharing system.
The teams will have to design their own software and demonstrate its capabilities,
and explain their design decisions.
The development must follow industrial processes.

Evaluations:   70% Project (evaluated in installements)
                      20% Presentation (project description, final presentation)
                      10% Class participation (attendance AND class participation)

The explanation of the project (my slides).

Sources of information.
Introduction to file sharing systems:
a white paper on resource sharing systems and a presentation

You are free to choose the programming language of your choice. Python, Java and C++ are by default acceptable. Any other
language should also be ok, but check with me first. 
Your program should run in Linuc on hill.cs.cur.edu.
The python programming language: a powerful programming language and can simplify network programming singificantly.
The classic tutorial in python : http://www.python.org/doc/tut/
Python Libraries: http://www.python.org/doc/lib/
The standard Socket how-to for python is available here:
http://www.amk.ca/python/howto/sockets/

A great website for introduction to python:
http://heather.cs.ucdavis.edu/~matloff/python.html

There is a simple introduction to network programming with python (an echo
server and a client).
http://heather.cs.ucdavis.edu/~matloff/Python/PyNet.pdf

My site on python with introduction and some simple programs.

Resources on network programming:

* Internetworking with TCP/IP Vol.1: Principles, Protocols, and Architecture (4th Edition)
by Douglas E. Comer (Author) (Hardcover)
* UNIX Network Programming, Volume 2: Interprocess Communications (2nd Edition)
by W. Richard Stevens (Author) (Hardcover)
* TCP/IP Sockets in C: Practical Guide for Programmers (The Practical Guides Series)
by Michael J. Donahoo, et al (Paperback ) (also in Java) introductory book.