CPSC 441:
Computer Networks and Distributed Processing

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall, 2002.

   Instructor:  David J. Eck.

   Monday, Wednesday, Friday, 3:00--3:55.
   Room Lansing 300 (or in a lab).

About This Course

It is hardly necessary to explain the importance of computer networking. It's everywhere. Computer networks are very complex systems, with many levels of organization. It is certainly not possible to learn everything in one term. (Probably not in one lifetime, especially since things seem to change as fast as anyone can learn them.) The key to dealing with this complexity is to learn the basic ideas and fundamental theory of computer networking. I hope that the course will make that possible, while at the same time covering a lot of practical material.

The main textbook for this course is Computer Networking: A Top-Down Approach Featuring the Internet, first edition, by James F. Kurose and Keith W. Ross. We will cover some material from each chapter in this book, while skipping some sections along the way. This book comes with access to a Web site, but I will probably not assign any specific readings from the Web site. The other major source of material will be the on-line user's guide for the Parallel Virtual Machine (PVM). PVM is a system used to write distributed programs. A distributed program is one that runs in pieces on a number of networked computers. We will cover PVM during the last two weeks of the term. There will be additional readings from handouts and on-line sources.

You can expect the course to be a mixture of various elements including: networking theory, details of TCP/IP networking, network configuration, client/server programming, and programming with PVM.

Labs and Assignments

Some classes -- about one per week -- will be in lab format instead of lecture. The labs will include hands-on work with network programming, network configuration, and using network-related software tools. Most of the assignments for the course will begin as exercises in lab that you will finish and turn in later. On many of these exercises, you will have the option of working with another student. You can also expect a few other assignments, in addition to the lab exercises.

The Final Project

In addition to the regular assignments, you will do a larger-scale final project. You should select a topic, in consultation with me, sometime around the middle of the term. We will discuss the possibilities in class before then. I am open to suggestions, but I expect that your project will fall into one of the following three broad categories:

The Computer Science Department might be willing to fund small equipment or software purchases in support of your project, if you choose your topic and put in a request early enough.

Tests and Grading

There will be two in-class tests, which will be given on Friday, October 18 and Friday, December 6. There is no final exam, but the final project is due during the scheduled final examination period for this class, at 1:30 PM on Thursday, December 19.

Your grade for the course will be computed as follows:

            First Test:     20%
            Second Test:    20%
            Assignments:    40%
            Final Project:  20%

Office Hours, E-mail, and Web

My office is room 301 in Lansing Hall. My office phone extension is 3398. I am on campus most days, and you are welcome to come in anytime you can find me there. I will announce my official office hours as soon as I schedule them.

My e-mail address is eck@hws.edu. E-mail is good way to communicate with me, since I usually answer messages the day I receive them.

The Web page for this course is at http://math.hws.edu/eck/cs441/. I will post weekly readings and assignments on that page.

Very Tentative Schedule

Dates Readings From Possible Lab
Sep. 2, 4, 6 Chapter 1 Ping and Traceroute
Sep. 9, 11, 13 Chapters 1 and 2 Application layer protocols
Sep. 16, 18, 22 Chapter 2 Socket programming
Sep. 23, 25, 27 Chapter 2 Socket Programming
Sep. 30; Oct. 2, 4 Chapter 3 Protocol configuration in Linux
Oct. 7, 9, 11 Chapter 3 Threaded server programming
Oct. 16, 18 Chapter 4
Test on Friday
(Fall Break, Oct. 14)
Oct. 21, 23, 25 Chapter 4 Basic network configuration
28, 30; Nov. 1 Chapters 4 and 5 Routing in Linux
Nov. 4, 6, 8 Chapter 5 Network utility programs
Nov. 11, 13, 15 Chapter 7 Firewalls and NAT
Nov. 18, 20, 22 Chapters 6 and 8 Security-related software
Nov. 25 PVM User Guide None
(Thanksgiving, Nov. 27 and 29)
Dec. 2, 4, 6 PVM User Guide
Test on Friday
PVM Programming
Dec. 9, 11, 13 PVM User Guide PVM Programming
Dec. 19 Scheduled Final Exam Period; Projects Due
Thursday, December 19, 1:30 PM