Department of Mathematics and Computer Science Hobart and William Smith Colleges Fall, 2004. Instructor: David J. Eck. Monday, Wednesday, Friday, 9:05 to 10:00. Room Lansing 300 (except Eaton 116 on most Fridays).
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, Third Edition, by James F. Kurose and Keith W. Ross. We will cover material from Chapters 1 through 6 of this book, although we will not cover every topic in these chapters. We will use this book for the first twelve weeks of the course. During the last two weeks, we will look at distributed programming using MPI, an API for parallel processing. The reading for this part of the course will consist of handouts and Web pages.
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 MPI.
On Fridays (except when an exam is scheduled), the class will meet in Eaton 116 for lab. 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. For this course, Eaton 116 has been set up with 12 computers. The class will be divided into groups, and each group will work on its own small network.
For the MPI programming at the end of the course, we will use the C++ programming language. I would like to use Java as the programming language for basic network programming, since Java has nice networking and threading capabilities, but we can discuss the possibility of using C++ instead. Several of the labs will use Ethereal, a "network sniffer" program that makes it possible to observe the details of the network traffic over a network connection.
There will be two in-class tests and a final exam. The tests will be given on Friday, October 1 and Friday, November 6, and the final exam will be during the scheduled final examination period for this course, 8:30 AM on Wednesday, December 15. The final exam will cover material from the entire course, but will concentrate heavily on the last part of the course.
Your grade for the course will be computed as follows:
First Test: 20% Second Test: 20% Final Exam: 20% Assignments: 40%
I expect you to be present and on time for all classes. There might be extraordinary circumstances that force you to miss a few classes. You should discuss any such cases with me at the earliest possible time. In the absence of such extraordinary circumstances, you can expect any absence to lower your grade for the course.
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 email@example.com. 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/index_f04.html. I will post weekly readings and assignments on that page.
|Dates||Topics and Readings||Possible Lab|
|Aug. 30; Sep. 1, 3||Networking and the Internet;
Chapter 1, Sections 1--5
|Intro to Linux Networking|
|Sep. 6, 8, 9||Network Delay, Layered Protocols;
Chapter 1, Sections 6, 7
|Ethereal Lab: HTTP|
|Sep. 13, 15, 17||The Application Layer; HTTP;
Chapter 2, Sections 1, 2
|Programming a Network Client|
|Sep. 20, 22, 24||Socket Programming for TCP;
Chapter 2, Sections 7, 9
|Programming a Network Server|
|Sep. 27, 29; Oct. 1||More Web Applications;
Chapter 2, Sections 3--5
|Test on Friday, October 1|
|Oct. 4, 6, 8||The Transport Layer;
Chapter 3, Sections 1--3
|A Multithreaded Server|
|Oct. 13, 15||TCP: Reliable Connections;
Chapter 3, Sections 4, 5
(Fall Break, Oct. 11)
|NFS and NIS|
|Oct. 18, 20, 22||TCP: Congestion Control;
Chapter 3, Sections 6, 7
|Ethereal Lab: TCP|
|25, 27, 29||The Network Layer;
Chapter 4, Sections 1, 3, 4
|Routing and Masquerading|
|Nov. 1, 3, 5||Routing;
Chapter 4, Sections 5, 6
|Test on Friday, November 5|
|Nov. 8, 10, 12||The Link Layer;
Chapter 5, Sections 1, 4--6
|Mac Addresses and ARP|
|Nov. 15, 17, 19||Wireless Networking;
Chapter 6, Sections 1--3
|Using wireless networks|
(Thanksgiving, Nov. 24 and 26)
|Introduction to MPI
(Lab is on Monday.)
|Nov. 29; Dec. 1, 3||Parallel Programming and MPI||MPI Programming|
|Dec. 6, 8, 10||Parallel Programming and MPI||More MPI Programming|
|Dec. 15||Final Exam
Wednesday, December 15, 8:30 AM