CS441: Computer Networking
Fall 2014

   Department of Mathematics and Computer Science
   Hobart and William Smith Colleges

   Fall, 2014.

   Instructor:  David J. Eck.

   Monday, Wednesday, Friday, 3:00–3:55 PM.
   Room Napier 101.

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. 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 textbook for this course is Computer Networking: A Top-Down Approach, Sixth Edition, by James F. Kurose and Keith W. Ross. We will cover much of the material in Chapters 1 through 5 of this book, along with some selected topics from the remaining chapters. During the last two weeks, I hope to look at distributed programming using MPI, an API for parallel and distributed processing, which is not covered in the text. (However, we can discuss other options for the last two weeks. We should do at least some work with distributed processing.)

Computer networks are complex. The complexity is handled by using what are called layered protocols. The Internet uses five layers, with each layer building on the services of the layer below it and making services available to the level above it. The meaning of "top-down" in the title of the textbook is that it starts with the top layer, the application layer, and works down from there. The application layer defines services that you use, for example, when you browse the web, send email, or use an instant messenger client. Below the application layer are the transport layer, the network layer, the link layer, and the physical layer. We will spend a large part of the course discussing what happens in each of these layers (except the physical layer not so much).


Assignments and Labs

The programming for this course will be mainly in Java. We will use Java's socket API. Sockets are a relatively high-level abstraction for network programming, and Java has a nice implementation. Assuming that we cover MPI, there will also be some programming in C at the end of the semester.

In addition to the the programming assignments, there will be some labs covering various network technologies. For the labs, the class will meet occasionally in the computer lab, Lansing 310.

Finally, there will be some written assignments, mostly based on problems from the textbook.


Final Project

Everyone in the class will design and complete a final project. I expect that most of the projects will be individual work, but it is possible that two or even three people might work together on a more ambitious project. The project will include a presentation during the scheduled final exam period.

Several types of projects are possible. One possibility is to research some topic related to networking and write a paper on it. Another possibility is a programming project in which you implement an existing network protocol or perhaps design and implement your own protocol. It is even possible that you might do something with network hardware—but we would have to start thinking about that fairly early so that we have time to work on finding the hardware.

I expect you to develop a project idea in consultation with me. We will discuss ideas in class, and you should start thinking about what type of project you might want to work on.


Tests and Grading

There will be two in-class tests which will be given on Wednesday, October 8 and Wednesday, November 19. The final project takes the place of a final exam and is due at the time of the regularly scheduled final exam for this course: Thursday, December 18, 8:30 AM. We will meet during the final exam period for presentations of final projects.

Your grade for the course will be computed as follows:

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

Attendance Policy

I expect you to be in class, except in extraordinary circumstances. Please discuss your absences with me, in advance if possible.


Statement from the CTL

Disability Accommodations: If you are a student with a disability for which you may need accommodations, you should self-identify and register for services with the Coordinator of Disability Services at the Center for Teaching and Learning (CTL), and provide documentation of your disability. Disability related accommodations and services generally will not be provided until the registration and documentation process is complete. The guidelines for documenting disabilities can be found at the following website: http://www.hws.edu/academics/ctl/disability_services.aspx

Please direct questions about this process or Disability Services at HWS to David Silver, Coordinator of Disability Services, at silver@hws.edu or x3351.


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.

The Web page for this course is at http://math.hws.edu/eck/cs441/index_f14.html. I will post weekly readings and assignments on that page. My e-mail address is eck@hws.edu.


Tentative Schedule

Here is a very tentative schedule for this course. You should expect adjustments to this schedule. We will definitely cover the important material from Chapters 1 through 5 in the textbook, but what we do in addition to that will depend to some extent on student interest.

Dates What's happening
Sept. 1, 3, and 5 Overview of networking. (Chapter 1)
Sept. 8, 10, and 12 Application layer: Principles. (Chapter 2)
Sept. 15, 17, and 19 Application layer protocols. (Chapter 2)
Sept. 22, 24, and 26 Socket programming. (Chapter 2)
Sept. 29; Oct. 1 and 3 The transport layer: UDP and TCP. (Chapter 3)
Oct. 6, 8, and 10 Test on Wednesday, October 8.
Reliable communication in the transport layer. (Chapter 3)
Oct. 15 and 17 Congestion control in the transport layer. (Chapter 3)
Oct. 20, 22, and 24 Network layer: The IP protocol. (Chapter 4)
Oct. 27, 29, and 31 Network layer: Routing. (Chapter 4)
Link layer: Principles. (Chapter 5)
Nov. 3, 5, and 7 Link layer: Ethernet and ARP. (Chapter 5)
Nov. 10, 12, and 14 Topics from wireless and mobile networking. (Chapter 6)
Nov. 17, 19, and 21 Test on Wednesday, November 19.
Topics from multimedia networking. (Chapter 7)
Nov. 24 No class on Wednesday or Friday, due to Thanksgiving.
Topics from network security. (Chapter 8)
Dec. 1, 3, and 5 Distributed Programming with MPI (?)
Dec. 8, 10, and 12 Distributed Programming with MPI (?)
Dec. 19 Final Exam.
Thursday, December 18, 8:30 AM